基于端口的虚拟主机通过为不同端口配置独立server块实现,每个块用listen指定唯一端口、root定义根目录、index设置首页文件,适用于开发测试;需注意防火墙放行、避免端口冲突,并推荐将配置存于/etc/nginx/conf.d/下统一管理。

直接在 Nginx 配置中为不同端口定义独立的 server 块,就是最基础的基于端口的虚拟主机。它不依赖域名或 IP,只靠监听端口区分服务,适合开发、测试或内网部署。
核心配置写法
每个 server 块绑定一个唯一端口,指定各自的根目录和首页文件:
- 用
listen 端口号指定监听端口(如8081、8082) -
server_name可设为localhost或留空(该字段在此场景下不参与路由判断) -
root指向该端口对应的服务根目录(例如/var/www/site-a) -
index定义默认索引文件(如index.html)
一个实际可用的示例
假设你要同时运行两个静态站点,分别通过 :8081 和 :8082 访问:
server {
listen 8081;
server_name localhost;
root /var/www/app-v1;
index index.html;
}
server {
listen 8082;
server_name localhost;
root /var/www/app-v2;
index index.html;
}
保存后执行 nginx -t 校验语法,再运行 nginx -s reload 生效。访问 http://你的IP:8081 就会加载 /var/www/app-v1/index.html,:8082 同理。
注意事项与常见问题
这类配置简单,但有几个关键点容易出错:
- 确保系统防火墙放行对应端口(如
ufw allow 8081或firewall-cmd --add-port=8081/tcp) - 避免端口冲突:不能有两个
server同时监听同一端口 - 静态资源路径以
root为基准,比如请求/css/style.css,Nginx 会尝试读取root/css/style.css - 若使用相对路径引入资源(如
<script src="js/main.js"></script>),请确认文件确实放在对应目录结构下
推荐存放位置与管理方式
不要直接改 nginx.conf 主配置文件,而是把端口虚拟主机配置单独存为 /etc/nginx/conf.d/port-based.conf 这类文件。Nginx 默认会 include /etc/nginx/conf.d/*.conf,便于隔离维护、按需启停。


















