目录
1. 为什么选择Nginx?
Nginx 作为一款高性能 Web 服务器和反向代理工具,具有以下核心优势:
特性 | 说明 |
---|---|
高并发处理 | 基于事件驱动和异步非阻塞模型,轻松支持数万并发连接(如电商大促场景)。 |
低内存消耗 | 静态资源处理内存占用仅为 Apache 的 1/5~1/10,适合资源受限环境。 |
反向代理与负载均衡 | 支持 HTTP、TCP/UDP 协议的分流,适用于微服务架构。 |
热部署 | 支持不中断服务更新配置或升级版本,保障业务连续性。 |
模块化扩展 | 可通过第三方模块(如 Lua、Brotli 压缩)灵活增强功能。 |
典型应用场景:
-
静态资源托管(图片、CSS/JS 文件)
-
API 网关和负载均衡(分发请求到后端 Tomcat、Node.js 服务)
-
安全防护(限流、WAF 集成)
2. Nginx安装包下载地址
-
官网下载:
nginx: download-
稳定版(Stable):推荐生产环境使用。
-
开发版(Mainline):体验最新功能。
-
3. 环境准备
3.1 验证并安装编译工具链
1. GCC 编译器
# 如果有gcc编译器,这条命令就会显示出当前安装的gcc编译器是哪个版本,没有需要安装。
gcc -v
2. 开发库依赖
依赖库 | 作用 | 验证命令 | 安装命令(CentOS) |
---|---|---|---|
openssl-devel | HTTPS 加密支持 | rpm -qa openssl-devel | sudo yum install openssl-devel |
pcre-devel | 正则表达式支持 | rpm -qa pcre-devel | sudo yum install pcre-devel |
zlib-devel | GZIP 压缩支持 | rpm -qa zlib-devel | sudo yum install zlib-devel |
3. 编译前验证原因:
-
这些库是 Nginx 核心功能的编译依赖(如无则编译失败)。
-
示例场景:
-
编译 Nginx 时,若缺少
openssl-devel
,则无法启用 HTTPS 模块。 -
缺少
pcre-devel
,Nginx 的rewrite
规则功能会编译失败。 -
缺少
zlib-devel
,软件无法实现数据压缩,可能影响性能(如传输大文件时带宽占用更高)。
-
4. Nginx 部署
4.1 开放防火墙端口
开放 80
(HTTP)端口和 443
(HTTPS)端口
(1)查看防火墙状态
systemctl status firewalld
(2)开放端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
(3)防火墙重新加载配置
firewall-cmd --reload
(4) 查看防火墙所有开放的端口
firewall-cmd --zone=public --list-ports
4.2 安装 Nginx
(1)解压源码包(以nginx-1.23.1.tar.gz为例)
tar -zxvf nginx-1.23.1.tar.gz -C /opt
(2)编译安装
进入nginx 目录下
cd nginx-1.23.1/
编译选项
prefix=/usr/local/nginx # 安装根目录
conf-path=/etc/nginx/nginx.conf # 配置文件路径
sbin-path=/usr/sbin/nginx # 指定 Nginx 可执行文件的安装路径
error-log-path=/var/log/nginx/error.log # 错误日志文件路径
http-log-path=/var/log/nginx/access.log # 访问日志文件路径
pid-path=/var/run/nginx.pid # 进程 ID(PID)文件路径
with-http_ssl_module # 启用 SSL 模块
with-http_gzip_static_module # 启用 GZIP 压缩
with-threads # 支持线程池
with-pcre # PCRE 正则支持
with-http_ssl_module # 启用 SSL 支持(HTTPS)
with-http_v2_module # 启用 HTTP/2
with-http_stub_status_module # 启用状态监控
./configure --prefix=/usr/local/nginx --conf-path=/etc/nginx/nginx.conf --sbin-path=/usr/sbin/nginx --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --with-http_ssl_module --with-http_gzip_static_module --with-threads --with-pcre --with-http_ssl_module --with-http_v2_module --with-http_stub_status_module
编译安装
make -j$(nproc) # 多核并行编译,加快速度
sudo make install # 需 root 权限安装到系统目录
(3)启动
/usr/local/nginx/sbin/nginx -c /etc/nginx/nginx.conf
(4)停止命令
/usr/local/nginx/sbin/nginx -s stop
(5)验证
浏览器访问 http://<服务器IP>
,显示 Nginx 欢迎页即表示成功。
(6)加入环境变量
永久添加(修改配置文件)
vi /etc/profile
在文件末尾添加:
export PATH=$PATH:/usr/local/nginx/sbin
保存后执行:
source /etc/profile
查看版本,确认命令生效
nginx -v
成功识别命令后,重新加载配置:
nginx -s reload
5.创建 systemd 服务文件
(1)创建配置
vi /etc/systemd/system/nginx.service
[Unit]
Description=nginx - high performance web server
Documentation=nginx documentation
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/usr/sbin/nginx -s reload
ExecStop=/usr/sbin/nginx -s stop
PrivateTmp=true
[Install]
WantedBy=multi-user.target
(2)重载 systemd 并管理服务
# 重载systemd管理器配置,使新创建的nginx服务文件生效
sudo systemctl daemon-reload
# 设置nginx服务开机自启动
sudo systemctl enable nginx
# 确保在启动前没有残留的nginx进程
# 若已有进程运行,可能导致端口冲突或配置不生效
sudo systemctl stop nginx
# 启动nginx服务
sudo systemctl start nginx
# 查看nginx服务运行状态
# 确认active(running)状态及运行时长等信息
sudo systemctl status nginx