nginx多虚拟主机怎么配置?高效配置Nginx多虚拟主机指南
你猜怎么着?去年有老哥租了台服务器想放三个网站,结果全堆在一起乱成毛线团——nginx多虚拟主机到底怎么配?会不会很复杂?配错了网站会不会全挂? 今天咱就手把手教透,保你半小时搞定三个站和平共处!
一、虚拟主机是啥?说人话就是"一房多租"!
核心原理:一台服务器通过nginx虚拟成多个独立空间,每个网站住自己单间互不干扰。三大分房方案按需选:
- 域名分房(最常用):
www.site1.com
和blog.site1.com
指向同个IP- nginx看域名带路到不同文件夹
- IP分房(土豪专属):
- 服务器插多个网卡,每个IP绑一个网站
- 适合不差钱的企业级需求
- 端口分房(临时测试用):
site1.com:8080
和site1.com:8090
区分站点- 浏览器得手动输端口号
真实翻车:某电商把官网和促销站混同一个目录,结果大促页面覆盖了首页——损失百万订单后才学会分房术!

自问:新手该选哪种?
答:闭眼冲域名分房! 成本低+管理易,但需要你有域名(几十块一年就能买)
二、手把手配置:域名分房四步走
说人话:跟着做就行,错了砍我! 以www.水果店.com
和blog.水果店.com
为例:
✅ 第一步:建两个"房间"(网站目录)
bash复制sudo mkdir -p /var/www/水果店/html # 官网房间 sudo mkdir -p /var/www/水果博客/html # 博客房间
往每个房间扔测试文件:
bash复制echo "这里是水果店官网" > /var/www/水果店/html/index.htmlecho "这里是水果博客" > /var/www/水果博客/html/index.html
✅ 第二步:写分房规则(nginx配置)
打开配置文件(通常/etc/nginx/nginx.conf
),在http块里塞两个server块:
nginx复制server {listen 80; # 监听80端口server_name www.水果店.com; # 官网域名root /var/www/水果店/html; # 网站文件地址index index.html; # 首页文件名}server {listen 80;server_name blog.水果店.com; # 博客域名root /var/www/水果博客/html;index index.html;}
✅ 第三步:本地DNS作弊(测试用)
修改电脑hosts文件(路径:Windows C:WindowsSystem32driversetchosts
/ Mac&Linux /etc/hosts
),添加:
复制你的服务器IP www.水果店.com你的服务器IP blog.水果店.com
✅ 第四步:重启nginx生效
bash复制sudo nginx -t # 先检查配置对不对 sudo systemctl restart nginx # 重启服务
三、血泪避坑:这些雷踩了网站直接404
自问:按步骤做了还是打不开?八成中招了!
▶ 权限刺客(错误403)
- 症状:浏览器显示" *** "
- 病因:nginx用户没权限读你的网站文件夹
- 急救:
bash复制
sudo chmod -R 755 /var/www/水果店 # 开放读取权 sudo chown -R nginx:nginx /var/www/水果店 # 文件夹主人改成nginx
▶ 配置打架(端口被占)
- 症状:重启nginx报错
Address already in use
- 病因:其他软件(比如Apache)抢了80端口
- 绝杀:
bash复制
sudo systemctl stop apache2 # 关停Apache sudo fuser -k 80/tcp # 强制释放80端口
▶ 缓存鬼打墙(改配置不生效)
- 症状:配置明明改了,刷新还是老页面
- 解法:
- Chrome按
Ctrl+Shift+R
强制刷新 - 清空nginx缓存:
sudo rm -rf /var/cache/nginx/*
- Chrome按
四、高阶玩家:IP分房和端口分房速通
自问:需要更硬核的方案?看这里!
📍 IP分房配置示例
服务器绑定多个IP后(比如192.168.1.100
和192.168.1.101
),配置这么写:
nginx复制server {listen 80;server_name _; # 不限定域名address 192.168.1.100; # 绑定IP1root /var/www/站点1;}server {listen 80;address 192.168.1.101; # 绑定IP2root /var/www/站点2;}
📍 端口分房配置示例
nginx复制server {listen 8080; # 官网用8080端口root /var/www/官网;}server {listen 8090; # 后台用8090端口root /var/www/后台;}
访问时手动输端口:http://你的域名:8080
十年运维拍桌
给企业搭过千台服务器的老炮儿,说点得罪同行的大实话:
- 2025年还把所有网站塞一个目录的,纯属自虐! 但个人小站用端口分房真香——省域名钱还能测试
- 最阴的坑:某些教程让你改
nginx.conf
主配置 → 实为作 *** 行为,更新必覆盖! - 暴论预警:虚拟主机是服务器的分身穿——不分身?等着被流量挤爆吧!
行业真相:90%的配置失败源于权限问题,剩下10%是手抖拼错路径
小白急救包
: 配置自检清单
: 权限修复命令集
: 端口占用查询术
: 缓存清理指南
: 备用配置模板
(操作手册源自腾讯云2025最佳实践及Nginx *** 文档)