Nginx反向代理搭建,多站点共用80端口

Nginx反向代理多站点共用80端口实战配置

多个网站想共用一台服务器的80端口,最稳妥的方式是用 Nginx 反向代理。
核心思路是:Nginx 监听 80 端口,根据请求的域名(server_name)转发到不同后端服务,每个站点可以用独立端口或独立目录。
下面按零基础可操作的方式,从安装到验证逐步展开。

先装好 Nginx 并确认 80 端口可用

以 CentOS 7/8 或常见 Linux 为例,先安装并启动:

# CentOS
sudo yum install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx

# Ubuntu/Debian
sudo apt update
sudo apt install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx

检查 80 端口是否被占用:

sudo ss -tlnp | grep :80

如果显示 nginx 进程,说明监听正常。
若被 httpd、apache 或其他程序占用,先停掉对应服务,否则 Nginx 会启动失败。

用 server_name 区分多个站点

假设你有两个域名:a.example.comb.example.com,分别对应本机 8081 和 8082 端口的后端服务。
/etc/nginx/conf.d/ 下新建两个配置文件,例如 a.confb.conf

a.conf 内容:

server {
    listen 80;
    server_name a.example.com;

    location / {
        proxy_pass http://127.0.0.1:8081;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

b.conf 内容类似,只需替换 server_nameproxy_pass 端口:

server {
    listen 80;
    server_name b.example.com;

    location / {
        proxy_pass http://127.0.0.1:8082;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

这样 Nginx 只监听一个 80 端口,但能根据访问域名把请求分发给不同后端。关键点是每个 server 块都写 listen 80,但 server_name 必须不同

检查配置并平滑生效

改完配置后不要直接重启,先测试语法:

sudo nginx -t

如果输出 syntax is oktest is successful,再重载:

sudo systemctl reload nginx

重载不会断开已有连接,比直接 restart 更平滑。

避坑:常见报错与端口冲突

  • 域名解析未生效:确认 a.example.comb.example.com 的 A 记录都指向这台服务器 IP。
  • 后端服务未启动proxy_pass 指向的 8081、8082 必须真有服务在监听,否则会返回 502。
  • server_name 重复:两个 server 块写相同域名,Nginx 只会用第一个匹配,第二个形同虚设。
  • 防火墙拦截:云服务器安全组和本机防火墙都要放行 80 端口,例如 sudo firewall-cmd --add-port=80/tcp --permanent && sudo firewall-cmd --reload
  • 缺少 Host 头:后端如果依赖域名判断,记得保留 proxy_set_header Host $host;,否则可能跳转到错误站点。

验证多站点是否真正生效

本地用 curl 模拟不同域名访问:

curl -H "Host: a.example.com" http://127.0.0.1
curl -H "Host: b.example.com" http://127.0.0.1

如果返回内容分别来自 8081 和 8082 后端,说明反向代理分流成功。
也可以直接浏览器访问两个域名,观察页面是否各自独立。

判断标准:同一个 80 端口,访问不同域名返回不同站点内容,且没有端口冲突报错,就说明配置正确。

实际部署中的几个小建议

如果后端服务本身也监听 80,需要先把它们改成其他端口,否则和 Nginx 冲突。
对于需要 HTTPS 的站点,可以在 Nginx 层统一配置证书,后端继续走 HTTP,这样证书管理更集中。
多站点共用 80 端口时,日志建议按站点拆分,方便排查是哪个域名出问题。

如果你正在搭建 Nginx 反向代理,想让多个站点共用 80 端口,按本文的配置顺序执行后,再用 nginx -t 和 curl 验证一遍,基本能覆盖大多数零基础场景。
遇到异常时优先检查端口占用、域名解析和 server_name 是否重复。

分享到:
上一篇
Nginx配置优化,提升CMS网站访问速度
下一篇
Nginx拦截恶意爬虫,保护CMS服务器资源
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意