本文基于个人实践所写,如有谬误请指出。

本文在Debian系统下通过编译安装的方式来安装nginx。

Nginx以及反向代理简介

  • nginx是一个高性能的HTTP和反向代理web服务器。从安全方面考虑,nginx应该安装在另一个服务器上,而不是同一服务器中既有nginx也有网站资料。(但是花钱)
  • 正向代理:比如使用vpn就是一种正向代理。在国内直接连上一台国外的代理服务器,通过代理服务器访问国外网站后将数据发还给国内主机,实现国内主机访问国外网站。对客户端负责,客户端说什么就做什么。
  • 反向代理:与正向代理相反,对服务端负责。将服务器的内容通过代理出来给别人看。比如说帮你展示一个网页。别人只能看到反向代理服务器(nginx所在的服务器)的ip等信息,而无法看到真正的服务端信息。当然,也可以在一个服务器上。

Nginx的安装

Nginx有几种安装方法:

  • 使用Nginx源码编译安装。
  • 通过docker的Nginx镜像直接使用。
  • 使用apt install nginx安装。(安装的版本可能会比较旧)

  本篇使用的是第一种安装方法使用Nginx源码编译安装。编译安装的优点是可自定义程度高,可以编译自己需要的模块、自选安装的位置。但缺点是装起来比较麻烦。

1. 检查环境

  首先检查本机,需要有如下几个依赖包:pcre、zlib、openssl、gcc。不同的系统安装命令不同,如缺少对应的包可能在编译安装过程中出错。 以下是Ubuntu以及Debian的安装命令。 pcre:sudo apt install libpcre3 libpcre3-dev zlib:sudo apt install zlib1g-dev openssl:sudo apt install openssl libssl-dev gcc:sudo apt install gcc

2.下载nginx安装包

  • 使用wget下载 wget https://nginx.org/download/nginx-1.24.0.tar.gz 会下载到当前目录。

  • 你也可以直接在nginx官网下载Linux版的安装包然后传到服务器上解压。 https://nginx.org/

  • 使用tar解压 tar -xf nginx-1.24.0.tar.gz 会解压在当前目录,得到一个nginx-1.24.0文件夹。

3. 编译配置简介

  进入解压后的文件夹:cd nginx-1.24.0 在这个文件夹内才可进行编译。首先使用下面整段的./configure命令进行编译配置(还未开始编译)。 以下是我自己的编译配置:(可整段复制)

./configure \
--prefix=/root/nginx \
--with-compat \
--with-file-aio \
--with-threads \
--with-http_addition_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_random_index_module \
--with-http_realip_module \
--with-http_secure_link_module \
--with-http_slice_module \
--with-http_sub_module \
--with-mail --with-mail_ssl_module \
--with-stream_realip_module \
--with-stream_ssl_module \
--with-stream_ssl_preread_module \
--with-pcre \
--with-stream \
--with-http_mp4_module \
--with-http_auth_request_module \
--with-http_stub_status_module \
--with-http_ssl_module \
--with-http_v2_module \
--with-cc-opt=-O3 

上述各行参数的简单介绍

  • 第二行的--prefix=/root/nginx参数决定了nginx安装在/root/nginx目录内。(绝对路径)

  • (可选)于安全起见,你应当使用useradd nginx建立一个名为nginx的用户并添加--user=nginx--group=nginx参数,使Nginx程序运行在nginx用户上。可能会在之后的使用中发生权限问题。

  • (可选)你还可以添加--add-module=/root/ngx_brotli参数启用 Brotli压缩,需要安装额外的依赖包,详情请百度nginx启用Brotli压缩。老懒狗了

(可选)nginx安装完成后各种类型文件安放位置对应参数:

--modules-path=/usr/lib/nginx/modules \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock	\
--http-client-body-temp-path=/var/cache/nginx/client_temp \
--http-proxy-temp-path=/var/cache/nginx/proxy_temp \
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
--http-scgi-temp-path=/var/cache/nginx/scgi_temp 

4. 编译、安装与软链接(快捷方式)

网上的一些教程中会将两个命令合起来make && make install或者make alinstall就是编译安装一起执行。

  • 编译 完成上述编译调参配置后,在当前文件夹nginx-1.24.0内输入: make进行编译。 编译不影响该文件夹内其他文件,可重复编译。

  • 安装 等待编译完成且无错误后,继续在当前文件夹nginx-1.24.0内输入: make install进行安装。

  • 验证安装 安装完成后,在之前你设置的目录内可以找到对应的nginx文件夹,我这里是/root/nginx/(绝对路径) 接下来进入文件夹cd /root/nginx/sbin内输入./nginx -V命令(V大写)。 看到显示 nginx版本号nginx version: nginx/1.24.0,nginx安装模块与编译配置相同,即证明安装成功。

  • 为nginx设置软链接(快捷方式) cd nginx-1.24.0\sbin 找到可执行文件nginx,就是我们刚刚执行的 ./nginx 的nginx文件。创建该文件的软链接到 /usr/bin/ 下:ln -s nginx /usr/bin/nginx 之后就可以在任意路径中使用 nginx -t等命令了。

5. 测试以及基本命令

  • 测试nginx文件是否配置正确可以启动:nginx -t
  • 显示nginx版本:nginx -V
  • 启动nginx:nginx(启动后可以输入 curl 127.0.0.1:80 查看本地80端口是否有输出进行验证。)
  • 停止:nginx -s quit
  • 更改配置后重载nginx配置:nginx -s reload

  当启动nginx后如果防火墙以及服务器端口设置无误,可在浏览器中输入 <你的ip>:80 查看nginx网页。一般来说会显示”Welcome Nginx“,当然如果显示403、404也是正常现象,只要能打开网页即可认为nginx安装无误。