nginx多端口虚拟主机配置文件
- 虚拟主机
- 2025-07-27
- 9
server
块设置不同端口和域名,实现多站点托管,每个块定义监听端口、域名及对应的根目录
配置步骤详解
-
修改主配置文件:打开Nginx的主配置文件(通常为
/etc/nginx/nginx.conf
),在http
块内添加多个server
段,每个段对应一个虚拟主机。
| 参数 | 作用 | 示例值 |
|——————–|———————————————————————-|—————————————–|
|listen
| 指定监听的端口号 |8001
,8002
|
|server_name
| 绑定到该端口的域名或IP地址 |13.19.188
(或其他自定义域名) |
|root
| 设置网站根目录路径 |html/html8001
,html/html8002
|
|index
| 定义默认索引文件及其优先级 |index.jsp index.html index.htm
| -
目录结构准备:根据配置中的
root
路径创建对应的物理目录,并在每个目录下放置测试文件(如index.html
),若root
设为html/html8001
,则需确保该路径存在且包含有效内容。 -
验证与重启服务:保存配置后,执行以下命令使更改生效:
- 检查语法正确性:
sudo nginx -t
; - 平滑重启Nginx:
cd /usr/local/nginx/sbin && nginx -s reload
; - 查看监听端口状态:通过
ss -tulnp | grep nginx
确认新端口已被占用。
- 检查语法正确性:
-
访问测试:使用浏览器或工具(如
curl
)访问不同端口下的站点,http://服务器IP:8001
和http://服务器IP:8002
应分别展示各自目录的内容。
以下是一个完整的多端口虚拟主机配置示例:
# 第一个虚拟主机(端口8001) server { listen 8001; server_name 106.13.19.188; root html/html8001; index index.jsp index.html index.htm; } # 第二个虚拟主机(端口8002) server { listen 8002; server_name 106.13.19.188; root html/html8002; index index.jsp index.html index.htm; }
常见问题与解答
如何避免端口冲突?
解答:在添加新的监听端口前,建议先使用命令netstat -tuln | grep :<端口号>
检查目标端口是否已被占用,若已被其他进程占用,需更换未使用的端口号,还需注意防火墙设置(如Ubuntu的ufw
或CentOS的firewalld
),确保开放了所需的端口。
同一台服务器能否同时支持HTTP和HTTPS协议?
解答:可以,只需在对应的server
块中为HTTPS添加ssl
参数即可。
server { listen 443 ssl; # HTTPS默认端口 listen 8443 ssl; # 另一个HTTPS备用端口 server_name example.com; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; ... }
此配置会同时启用443和8443两个HTTPS端口,并加载相同的SSL证书