Nginx 概述
Nginx 是一款由俄罗斯程序员 Igor Sysoev 开发的轻量级、高性能 HTTP 和反向代理服务器,同时支持 IMAP/POP3/SMTP 代理。自 2004 年发布以来,凭借高并发处理能力、低内存消耗和稳定性,成为全球最受欢迎的 Web 服务器之一,广泛应用于静态资源服务、反向代理、负载均衡及 API 网关等场景。
源码编译安装
解压并进入目录后,通过 configure 指定安装路径及模块参数。注意 --with-http_ssl_module 等关键模块需根据需求开启。
# 解压压缩包
tar zxf nginx-1.24.0.tar.gz
cd nginx-1.24.0
# 编译配置
./configure --prefix=/usr/local/nginx \
--user=nginx --group=nginx \
--with-http_ssl_module --with-http_v2_module \
--with-http_realip_module --with-http_stub_status_module \
--with-pcre --with-stream --with-stream_ssl_module \
--with-stream_realip_module
# 编译安装
make && make install
验证版本及编译参数:
/usr/local/nginx/sbin/nginx -V
若需自定义版本号,可在编译前编辑 src/core/nginx.h,修改 NGINX_VERSION 宏定义,重新编译即可生效。
平滑升级与回滚
升级时建议保留旧版二进制文件以便回滚。无需执行 make install,直接 make 生成新二进制文件,替换原 sbin/nginx 即可。重启或重载服务时,主进程会保持旧版本运行直到新进程就绪,实现平滑过渡。
升级步骤:
- 备份旧版命令:
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak - 编译新版本:
cd nginx-new-version && ./configure ... && make - 替换二进制:
cp objs/nginx /usr/local/nginx/sbin/nginx - 检测配置:
nginx -t - 重载服务:
nginx -s reload
回滚策略:
若新版本发现问题,只需将备份的旧版二进制恢复,再次执行 nginx -s reload 即可拉起旧版本 Worker 进程。旧 Master 进程可强制终止(kill -9 <pid>)。
Systemd 服务管理
编写 systemd 配置文件可实现服务的自动启动与管理。创建 /lib/systemd/system/nginx.service:
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
=/usr/local/nginx/sbin/nginx
=/bin/kill -s HUP
=/bin/kill -s QUIT
=
=multi-user.target

