Nginx 配置文件详解以及配置多端口监听流程
Nginx 的配置文件 /etc/nginx/nginx.conf
是其核心配置文件,通过修改它可以实现 更改 HTTP 监听端口 或 同时监听多个端口。
1. Nginx 配置文件结构解析
/etc/nginx/nginx.conf
主要分为几个部分:
nginx
# 全局块(配置全局参数) user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; # Events块(配置网络连接) events { worker_connections 1024; } # HTTP块(核心配置) http { include /etc/nginx/mime.types; default_type application/octet-stream; # Server块(虚拟主机配置) server { listen 80; # 默认监听80端口 server_name localhost; location / { root /usr/share/nginx/html; index index.html; } } }
2. 修改端口或监听多端口
(1)修改默认 HTTP 端口(80 → 8080)
找到 server
块中的 listen
指令,修改端口:
nginx
server { listen 8080; # 改为8080端口 server_name localhost; location / { root /usr/share/nginx/html; index index.html; } }
(2)同时监听多个端口
在同一个 server
块中添加多个 listen
指令:
nginx
server { listen 80; # 监听80端口 listen 8080; # 同时监听8080端口 server_name localhost; location / { root /usr/share/nginx/html; index index.html; } }
或通过多个 server
块实现不同端口的差异化配置:
nginx
server { listen 80; server_name localhost; location / { root /var/www/html-port80; index index.html; } } server { listen 8080; server_name localhost; location / { root /var/www/html-port8080; index index.html; } }
3. 完整操作流程
步骤1:备份原配置
bash
sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
步骤2:编辑配置文件
bash
sudo vim /etc/nginx/nginx.conf
按上述示例修改 listen
端口。
步骤3:检查语法是否正确
bash
sudo nginx -t
正常输出:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
步骤4:重启 Nginx
bash
sudo systemctl restart nginx
步骤5:验证端口监听
bash
ss -tulnp | grep nginx
输出应包含新端口:
tcp LISTEN 0 128 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=1234)) tcp LISTEN 0 128 0.0.0.0:8080 0.0.0.0:* users:(("nginx",pid=1234))
步骤6:测试访问
bash
curl http://localhost:8080
或浏览器访问:
http://服务器IP:8080
4. 进阶配置
(1)监听特定 IP 的端口
nginx
server { listen 192.168.1.100:80; # 仅监听该IP的80端口 server_name localhost; }
(2)HTTPS 多端口监听
nginx
server { listen 443 ssl; listen 8443 ssl; # 同时监听443和8443的HTTPS server_name localhost; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; }
(3)IPv6 端口监听
nginx
server { listen [::]:80; # IPv6的80端口 listen [::]:8080; # IPv6的8080端口 server_name localhost; }
5. 注意事项
-
防火墙放行端口:
bash
-
sudo ufw allow 8080 # Ubuntu/Debian sudo firewall-cmd --add-port=8080/tcp --permanent # CentOS/RHEL
-
SELinux 问题(CentOS/RHEL):
bash
-
sudo semanage port -a -t http_port_t -p tcp 8080
-
避免端口冲突:确保新端口未被其他服务占用(如 Apache、Tomcat)。
总结
需求 | 配置方式 |
---|---|
修改默认端口(80→8080) | 修改 listen 80 为 listen 8080 |
同时监听80和8080 | 在同一 server 块中添加 listen 8080 |
不同端口差异化配置 | 使用多个 server 块,分别设置 listen |
HTTPS 多端口监听 | 在 listen 后加 ssl 参数(如 listen 8443 ssl ) |
通过修改 /etc/nginx/nginx.conf
中的 listen
指令,可灵活控制 Nginx 的监听行为。记得 测试配置 和 重启服务!