Nginx基于端口的多虚拟主机需为每个server块配置唯一listen端口(如8080/8081/8082)、独立root目录和index文件,server_name非必需但建议设为localhost便于调试;PHP站点须配置fastcgi_pass并确保PHP-FPM运行;配置后须nginx -t验证语法、检查目录权限,再nginx -s reload生效。

在 Nginx 中配置基于不同端口的多个虚拟主机,核心是为每个站点分配独立的 listen 端口,并搭配专属的 root 和 index 设置。它不依赖域名,适合内网服务、测试环境或后台系统等场景。
每个 server 块必须绑定唯一端口
端口是区分虚拟主机的关键标识,不能重复。例如可同时启用 8080、8081、8082,但两个 listen 8080 会导致 Nginx 启动失败。
- 端口号建议选 1024 以上(避免系统保留端口)
- 若需外部访问,记得开放对应端口的防火墙规则(如 ufw、firewalld 或云平台安全组)
-
server_name可设为localhost或具体 IP,对端口模式非必需,但建议填写便于日志和调试
为每个站点指定独立的根目录和首页文件
root 决定请求路径的起始位置,index 定义默认返回的文件。二者需与实际文件结构严格匹配。
- 使用绝对路径(如
/var/www/site-a),避免因工作目录变化导致资源找不到 -
index支持多个文件名,按顺序查找:例如index dashboard.php index.html表示先找dashboard.php,不存在再找index.html - 若首页是 PHP 文件(如
dashboard.php),需确保已启用 PHP-FPM 并在 location 中正确配置 fastcgi_pass
基础配置示例(三端口三站点)
假设三个站点文件分别存放在:
-
/var/www/site-a/→ 含index-a.html -
/var/www/site-b/→ 含dashboard.php -
/var/www/site-c/→ 含landing.html
对应 Nginx 配置如下:
server {
listen 8080;
server_name localhost;
root /var/www/site-a;
index index-a.html;
location / {
try_files $uri $uri/ =404;
}
}
server {
listen 8081;
server_name localhost;
root /var/www/site-b;
index dashboard.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index dashboard.php;
include fastcgi.conf;
}
}
server {
listen 8082;
server_name localhost;
root /var/www/site-c;
index landing.html;
location / {
try_files $uri $uri/ =404;
}
}
配置后务必验证与生效
写完配置不要直接 reload,先做两步关键检查:
- 执行
nginx -t测试语法是否正确;报错时根据提示定位到行号修改 - 确认站点目录权限:Nginx 工作进程用户(如
www-data或nginx)需有读取文件权限,必要时用chown或chmod调整 - 无误后运行
nginx -s reload生效配置,无需重启整个服务


















