Nginx基于端口的虚拟主机通过多个server块监听不同端口实现,每个块独立处理对应请求,不依赖域名或IP,适用于测试、内部隔离及临时部署。

Nginx 中通过 Virtual Host 配置多端口,本质是利用多个 server 块监听不同端口,每个块独立处理对应端口的请求。这种方式不依赖域名或IP,适合测试、内部服务隔离或临时部署。
关键点:每个端口对应一个 server 块,端口必须明确监听,且不能冲突
基于端口的 Virtual Host 配置步骤
- 确保目标端口未被其他服务占用(如 8080、8081、8000 等)
- 所有
server块都可放在主配置文件nginx.conf的http块内,或统一存入/etc/nginx/conf.d/下的独立.conf文件中 - 每个
server块中listen指令必须写明具体端口号,例如listen 8080; -
server_name可设为localhost或留空(此时匹配任意 Host 头),也可填具体域名(但端口访问时 DNS 不生效,仅作标识) -
root或proxy_pass需按端口区分指向不同资源路径或后端服务
典型配置示例(两个端口)
# /etc/nginx/conf.d/port8080.conf
server {
listen 8080;
server_name localhost;
root /var/www/app-a;
index index.html;
}# /etc/nginx/conf.d/port8081.conf
server {
listen 8081;
server_name localhost;
proxy_pass http://127.0.0.1:3000; # 转发到本地 Node.js 应用
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}注意事项
- 防火墙需放行对应端口(如
sudo firewall-cmd --add-port=8080/tcp --permanent && sudo firewall-cmd --reload) - 若使用 SELinux,确认
http_port_t类型已包含自定义端口:sudo semanage port -a -t http_port_t -p tcp 8080 - 浏览器访问时需显式带端口:
http://your-server-ip:8080 - 不建议在生产环境直接暴露非标准端口给公网,应配合反向代理或 HTTPS 终止层统一走 80/443
配置完成后执行:
sudo nginx -t && sudo systemctl reload nginx
这样就能让 Nginx 同时响应多个端口的请求,每个端口承载独立站点或服务。


















