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 的监听行为。记得 测试配置 和 重启服务!

