安装

安装依赖

yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel

下载 Nginx

Nginx 官网下载地址

复制所要下载的版本的下载连接:

比如说这里我下载的是稳定版本 nginx-1.26.3

在 Linux 服务器上使用 wget 命令下载(图个方便,你也可以直接下载后传到 Linux 服务器上):

wget http://nginx.org/download/nginx-1.26.3.tar.gz

解压缩包:

解压缩完如下:

编译安装

进入到 nginx 中,编译

./configure

安装:

make&&make install


安装完成后,nginx 程序的路径在 /usr/local/nginx

启动停止

进入 /usr/local/nginx/sbin 下执行 ./nginx 启动 nginx

附一个反向代理的案例,修改 nginx 的配置文件,然后执行 ./nginx -s reload(修改配置文件后,可以使用 ./nginx -t 检查一下配置文件是否正确)

upstream halo {
  server 127.0.0.1:8090;
}

server {
  listen 80;
  listen [::]:80;
  server_name www.yourdomain.com;
  client_max_body_size 1024m;
  location / {
    proxy_pass http://halo;
    proxy_set_header HOST $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

停止的话我们可以执行 ./nginx -s stop

配置

配置 SSL

上传证书到服务器上,可以使用 scp 命令,如下:

scp C:\ssl.example.com_cert\ssl.example.com.pem root@<远程服务器IP>:/etc/nginx/cert
scp C:\ssl.example.com_cert\ssl.example.com.key root@<远程服务器IP>:/etc/nginx/cert

编辑 nginx 配置文件 nginx.conf,添加以下信息

server {
  ## 必选配置
  listen 443 ssl; # 开启监听443端口
  server_name ssl.example.com; # 被监听的域名
  ssl_certificate /etc/nginx/cert/ssl.example.com.pem; # 证书文件路径
  ssl_certificate_key /etc/nginx/cert/ssl.example.com.key; # 私钥文件路径

  ## 可选配置
  # ssl_session_timeout 5m; # 客户端可以重用会话参数的时间
  # ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; # 允许的加密套件类型
  # ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; # 允许的TLS协议类型
  # ssl_prefer_server_ciphers on; # 协商加密算法时,优先使用服务端的加密套件,而不是客户端浏览器的加密套件

  ## 网站配置,与80端口的相关配置一致
  root html; 
  index index.html index.htm;
  location / {
    root html;
    index index.html index.htm;
  }
}

编辑完成后保存,可以使用 ./nginx -t 检查配置是否正确,然后使用 ./nginx -s reload 重启 nginx 就好

问题

the "ssl" parameter requires ngx_http_ssl_module

该错误是 nginx 缺少 SSL 模块,解决步骤如下:

重新配置 SSL 模块:

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --原来有的模块(如果有的话)

如果运行之后,最终报错如下:

需要下载 OpenSSL 库,如果没有报错,这一步跳过:

yum -y install openssl openssl-devel

编译。注意,这里不能 make install 否则会覆盖安装

make

替换已安装好的 nginx 包

cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

先停止 nginx 服务

./usr/local/nginx/sbin/nginx -s stop

将刚刚编译好的 nginx 覆盖掉原有的 nginx

# 在Nginx解压目录下使用以下命令
cp ./objs/nginx /usr/local/nginx/sbin/

查看下载 SSL 模块是否成功

/usr/local/nginx/sbin/nginx -V

此时应该显示为即配置成功:

configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

然后去启动以下 nginx 就可以了

设置文件上传大小限制

修改 nginx 中 http 配置:

http {
    include mime.types;
    default_type application/octet-stream;
    client_max_body_size 10M;             #上传文件大小限制

修改完重启 nginx