> 技术文档 > Nginx 配置文件详解以及配置多端口监听流程_nginx监听多个端口

Nginx 配置文件详解以及配置多端口监听流程_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 oknginx: 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. 注意事项

  1. 防火墙放行端口

    bash

  • sudo ufw allow 8080 # Ubuntu/Debiansudo firewall-cmd --add-port=8080/tcp --permanent # CentOS/RHEL
  • SELinux 问题(CentOS/RHEL)

    bash

  1. sudo semanage port -a -t http_port_t -p tcp 8080
  2. 避免端口冲突:确保新端口未被其他服务占用(如 Apache、Tomcat)。


总结

需求 配置方式 修改默认端口(80→8080) 修改 listen 80listen 8080 同时监听80和8080 在同一 server 块中添加 listen 8080 不同端口差异化配置 使用多个 server 块,分别设置 listen HTTPS 多端口监听 在 listen 后加 ssl 参数(如 listen 8443 ssl

通过修改 /etc/nginx/nginx.conf 中的 listen 指令,可灵活控制 Nginx 的监听行为。记得 测试配置重启服务