2 Nginx 安装

felix.shao2025-02-10

2 Nginx 安装

安装

 Nginx 服务器的软件版本包括 Windows 版和 Linux 版两种,可以在官方网站上找到对应版本的下载链接。

Window 安装

 Nginx 的 Window 安装比较简单,即下载后得到类似nginx-1.16.1.zip的安装包,使用解压工具解压此压缩文件后,点击 nginx.exe 启动即可。Window 安装包文件夹结构及简介如下:

  • conf 存放 Nginx 服务器的配置文件,包括 Nginx 服务器的基本配置文件和对部分特性的配置文件。
  • contrib 配置 contrib 让 nginx 脚本文件有色彩类似其它开发环境。
  • docs 存放了 Nginx 服务器的文档资料。
  • html 存放了两个后缀名为 .html 的静态网页文件。
  • logs 存放了 Nginx 服务器的运行日志文件。
  • nginx.exe 启动 Nginx 服务器的运行程序。
  • temp 临时目录。

Centos Stream 9 安装

dnf install -y nginx

# 安路径为 /etc/nginx

Centos 7 安装

 Linux 安装使用源码安装方式安装,步骤如下:

1. 安装依赖
$ yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel

2. 安装 nginx
$ wget https://nginx.org/download/nginx-1.17.9.tar.gz
$ tar -zxvf nginx-1.17.9.tar.gz -C /usr/local/
$ mv /usr/local/nginx-1.17.9 /usr/local/nginx

$ cd /usr/local/nginx
// 定制化生成 Makefile 文件
$ ./configure --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/nginx.conf --with-http_stub_status_module --with-http_ssl_module
// 编译&安装
$ make & make install

安装编译后默认路径:/usr/local/nginx

3. 启动/停止/重启
配置软连接: $ ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/
启动:`$ /usr/local/nginx/sbin/nginx`
停止nginx:`$ /usr/local/nginx/sbin/nginx -s stop`
重启nginx:`$ /usr/local/nginx/sbin/nginx -s reload`
ps -ef|grep nginx
netstat -anpl|grep 80

Linux 安装包nginx-1.17.9.tar.gz解压后的文件夹结构及简介如下:

  • src 存放了 Nginx 软件的所有源代码。
  • man 存放了 Nginx 软件的帮助文档,可以使用$ man nginx查看。
  • auto 存放了大量脚本文件,和 configure 脚本程序有关。具体脚本有如检查环境,检查模块,处理脚本参数等。
  • conf 同 Windows。
  • configure Nginx 软件的自动脚本程序。
  • contrib 同 Windows。
  • html 同 Windows。
  • README 同 Windows 版本 docx 目录下同名文件。
  • LICENSE 同 Windows 版本 docx 目录下同名文件。
  • CHANGES 同 Windows 版本 docx 目录下同名文件。
  • CHANGES.ru 同 Windows 版本 docx 目录下同名文件。  其中 configure 脚本支持的常用选项见nginx中configure脚本支持的常用选项open in new window

make & make install安装完后,安装目录会多出两个目录。

  • logs:日志目录。
  • sbin:Nginx服务器的主程序。

服务的启停控制

 nginx 命令相关语法可使用man nginx查看相关语法。

信号控制

 获取 nginx 的 pid 有两个途径:

  1. 默认的 logs 目录里有nginx.pid文件,可以里面保存有进程 id 信息。
  2. 使用 linux 命令ps -ef|grep nginx,可以看到 nginx 的主进程和工作进程。

 Nginx 服务主进程能够接收的信号如下表:

信号作用
TERM 或 INT快速停止 Nginx 服务
QUIT平缓停止 Nginx 服务
HUP使用新的配置文件启动进程,之后平缓停止原有进程,也就是所谓的"平滑重启"
USR1重新打开日志文件,常用于日志切割
USR2使用新版本的 Nginx 文件启动服务,之后平缓停止原有 Nginx 进程,也就是所谓的"平滑升级"
WINCH平缓停止 worker process,用于 Nginx 服务器平滑升级

 向 nginx 服务主进程发送信号也有两种方法:
1.使用 nginx 二进制文件,如./sbin/nginx -h。 2.使用 kill 命令发送信号,其用法是kill signal pid,signal 取值范围为上述表格信号 key。

启动

 启动前配置检查:

  • nginx -V:显示版本号和 Nginx 服务器的编译情况。
  • nginx -t: 检查 Nginx 服务器配置文件是否有语法错误。

 配置项介绍:

  • -s signal:用来向 Nginx 服务的主进程发送信号。
  • -p prefix:用来改变 Nginx 的安装路径,常用于平滑升级 Nginx 服务器的场合。
  • -c filename:用来指定启动 Nginx 服务使用的配置文件。
  • -g directives:用来补充 Nginx 配置文件,向 Nginx 服务指定启动时应用于全局的配置。

 启动命令:./sbin/nginx

停止

 停止 Nginx 服务有两种方法:一种是快速停止;一种是平缓停止。

  • 快速停止:立即停止当前 Nginx 服务正在处理的所有网络请求,马上丢弃连接,停止工作。
  • 平缓停止:允许 Nginx 服务将当前正在处理的网络请求处理完成,但不再接收新的请求,之后关闭连接,停止工作。

 停止 Nginx 服务的操作比较多。可以发送信号:

  • 方式一:./sbin/nginx -g TERM | INT | QUIT,其中 TERM 与 INT 信号用于快速停止,QUIT 用于平缓停止。
  • 方式二:kill TERM | INT | QUIT '/nginx/logs/nginx.pid'

WARNING

 实际测试时,两种停止命令都遇到了问题,直接使用kill TERM pid过了

[root@VM-0-17-centos nginx]# kill TERM `/usr/local/nginx/logs/nginx.pid`
-bash: /usr/local/nginx/logs/nginx.pid: No such file or directory
-bash: kill: TERM: arguments must be process or job IDs
[root@VM-0-17-centos nginx]# nginx -g TERM
nginx: [emerg] unexpected end of parameter, expecting ";" in command line

TIP

 思考:为什么平滑停止后还有 master 和 worker 进程存在?

重启

 更改 Nginx 服务器的配置和加入新模块后,如果希望当前的 Nginx 服务应用和新的配置或使新模块生效,就需要重启 Nginx 服务。当然我们可以先关闭 Nginx 服务,然后使用新的 Nginx 配置文件重启服务。这里主要介绍 Nginx 服务的平滑重启。
平滑重启:Nginx 服务进程接收到信号后,首先读取新的 Nginx 配置文件,如果配置语法正确,则启动新的 Nginx 服务,然后平缓关闭旧的服务进程;如果新的 Nginx 配置有问题,将显示错误,仍然使用旧的 Nginx 进程提供服务。
使用以下命令实现 Nginx 服务的平滑重启

  • 方式一:./sbin/nginx -g HUP [-c newConfFile] HUP 信号用于发送平滑重启信号。newConfFile,可选项,用于指定新配置文件的路径。
  • 方式二:使用新的配置文件代理了旧的配置文件后,使用kill HUP '/.../logs/nginx.pid'

升级

 主要关注点是平滑升级知识点,略,可参考网络知识点内容。

简单配置示例

修改首页配置
location / {
    root /data/dist/;                         # 项目路径
    index index.html;
    try_files $uri $uri/ /index.html;  # 匹配不到任何静态资源,跳到同一个 index.html
}

常见问题

生成 SSL 证书

openssl genrsa -des3 -out localhost.key 1024   
密码设置为 123456

 去除之前创建私钥设置的密码,不然配置到 nginx 后启动还要输入密码,太麻烦。

首先复制一份 localhost.key 文件,命名为:localhost.key.org
输入命令:openssl rsa -in localhost.key.org -out localhost.key
然后输入之前设置的密码:123456

 创建 csr 文件。

openssl req -new -key localhost.key -out localhost.csr
以下是输入的一系列信息:注意域名是最重要的。
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:CHINA
Locality Name (eg, city) []:shanghai
Organization Name (eg, company) [Internet Widgits Pty Ltd]:localhost
Organizational Unit Name (eg, section) []:test
Common Name (e.g. server FQDN or YOUR name) []:test
Email Address []:test

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:123456
An optional company name []:localhost

 生成 crt 证书。

openssl x509 -req -days 365 -in localhost.csr -signkey localhost.key -out localhost.crt

拓展

Nginx 安装 Https

Last Updated 2/10/2025, 4:04:40 PM