nginx多虚拟主机怎么配置?高效配置Nginx多虚拟主机指南

你猜怎么着?去年有老哥租了台服务器想放三个网站,结果全堆在一起乱成毛线团——​​nginx多虚拟主机到底怎么配?会不会很复杂?配错了网站会不会全挂?​​ 今天咱就手把手教透,保你半小时搞定三个站和平共处!


一、虚拟主机是啥?说人话就是"一房多租"!

​核心原理​​:一台服务器通过nginx虚拟成多个独立空间,每个网站住自己单间互不干扰。三大分房方案按需选:

  1. ​域名分房(最常用)​​:
    • www.site1.comblog.site1.com指向同个IP
    • nginx看域名带路到不同文件夹
  2. ​IP分房(土豪专属)​​:
    • 服务器插多个网卡,每个IP绑一个网站
    • 适合不差钱的企业级需求
  3. ​端口分房(临时测试用)​​:
    • site1.com:8080site1.com:8090区分站点
    • 浏览器得手动输端口号

真实翻车:某电商把官网和促销站混同一个目录,结果大促页面覆盖了首页——​​损失百万订单后才学会分房术!​

nginx多虚拟主机怎么配置?高效配置Nginx多虚拟主机指南  第1张

​自问:新手该选哪种?​
​答:闭眼冲域名分房!​​ 成本低+管理易,但需要你有域名(几十块一年就能买)


二、手把手配置:域名分房四步走

​说人话:跟着做就行,错了砍我!​​ 以www.水果店.comblog.水果店.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端口

​▶ 缓存鬼打墙(改配置不生效)​

  • ​症状​​:配置明明改了,刷新还是老页面
  • ​解法​​:
    1. Chrome按Ctrl+Shift+R强制刷新
    2. 清空nginx缓存:sudo rm -rf /var/cache/nginx/*

四、高阶玩家:IP分房和端口分房速通

​自问:需要更硬核的方案?看这里!​

​📍 IP分房配置示例​

服务器绑定多个IP后(比如192.168.1.100192.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 *** 文档)