Nginx反向代理多外贸站点独立隔离配置

用Nginx反向代理隔离配置多外贸站点:从零开始的实操教程

做外贸的朋友通常会遇到一个场景:同一个服务器上跑多个独立站点,域名不同、后端应用不同,但希望每个站点互不干扰,流量、日志、资源都要隔离。
这时使用 Nginx反向代理 是最经典也是成本最低的方案。

本文将从零开始,教你如何用Nginx为多个外贸站点配置反向代理,实现真正的独立隔离。
读完你会明白:如何用同一个Nginx管理多个域名,如何把每个域名代理到不同的后端服务,以及踩坑后怎么快速恢复。

准备工作:了解你的环境

在动手之前,先确认三样东西:

  1. 服务器:一台Linux服务器(CentOS 7/8、Ubuntu 20.04+ 都可以),已安装Nginx。如果没有安装,可以运行以下命令快速安装(以Ubuntu为例):
   sudo apt update
   sudo apt install nginx -y
  1. 域名:两个不同的外贸站点域名,例如 shop-a.com 和 shop-b.com,并且已经解析到你的服务器IP。
  2. 后端服务:假设你已经用Docker或裸机跑了两个Web应用,分别监听本地的 127.0.0.1:3001 和 127.0.0.1:3002。
提示:如果你没有两个后端服务,可以先用两个简单的 index.html 页面本地开临时端口测试,比如用Python:
python3 -m http.server 3001 --directory /var/www/site-a 和 python3 -m http.server 3002 --directory /var/www/site-b。

配置Nginx:不同域名代理不同后端

Nginx的配置文件通常位于 /etc/nginx/nginx.conf,但最好为每个站点单独创建配置文件,放在 /etc/nginx/conf.d/ 或 /etc/nginx/sites-available/ 下(取决于发行版)。
下面我们创建两个独立的配置文件。

第一个站点:shop-a.com

创建文件 /etc/nginx/conf.d/shop-a.com.conf:

server {
    listen 80;
    server_name shop-a.com www.shop-a.com;

    # 日志独立隔离(方便排查问题)
    access_log /var/log/nginx/shop-a.access.log;
    error_log /var/log/nginx/shop-a.error.log;

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

关键点:

  • server_name 指定该配置仅匹配 shop-a.com 及其 www 子域名。
  • proxy_pass 将请求转发到本机的 3001 端口。
  • proxy_set_header 确保后端应用能获取真实的客户端IP和域名。
  • 日志独立:每个站点都有自己的日志文件,方便运维审计。

第二个站点:shop-b.com

创建文件 /etc/nginx/conf.d/shop-b.com.conf:

server {
    listen 80;
    server_name shop-b.com www.shop-b.com;

    access_log /var/log/nginx/shop-b.access.log;
    error_log /var/log/nginx/shop-b.error.log;

    location / {
        proxy_pass http://127.0.0.1:3002;
        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

# 检查配置文件语法
sudo nginx -t
# 如果没有报错,重新加载Nginx
sudo systemctl reload nginx
# 或者
sudo nginx -s reload
如果 nginx -t 提示错误,请根据提示检查配置文件路径或语法。常见错误:忘记写分号、server_name 拼写有误、proxy_pass 漏了端口。

隔离细节:除了域名,还有哪些需要隔离?

很多新手只配置了 proxy_pass,却忽略了其他隔离维度,容易导致站点之间互相干扰。
下面几个点必须注意:

  1. 日志隔离:上面我们已经做了,每个站点用独立的 access_log 和 error_log。
  2. 缓存隔离:如果站点使用了Nginx缓存(proxy_cache),不同站点的缓存路径和 proxy_cache_key 要不同。例如:
   proxy_cache_path /var/cache/nginx/shop-a levels=1:2 keys_zone=shop_a:10m max_size=1g inactive=60m;
   proxy_cache_path /var/cache/nginx/shop-b levels=1:2 keys_zone=shop_b:10m max_size=1g inactive=60m;

然后在各自的 location 里引用 proxy_cache shop_a 或 proxy_cache shop_b。

  1. 限流隔离:如果某个站点被恶意攻击,你可以在 server 块内单独配置限流(limit_req_zone),不影响其他站点。
  2. SSL证书隔离:如果使用HTTPS,每个站点的证书和私钥路径不同,直接在各自的 server 块里配置 ssl_certificate 即可。

高频问题与避坑指南

Q1:配置后访问域名显示Nginx欢迎页或404?

  • 检查 server_name 是否和域名完全匹配(包括 www 子域名)。
  • 检查后端服务是否正常运行:curl http://127.0.0.1:3001 看是否有响应。
  • 确认防火墙开放了80端口(或443)。

Q2:如何让两个站点共用80端口但互不干扰?

就是上面配置的方法:Nginx会根据请求头中的 Host 字段自动匹配 server_name,只有匹配到的 server 块才会处理。
如果不匹配,会进入默认的 default_server。
建议将最后一个不匹配的请求返回444(直接断开连接):

server {
    listen 80 default_server;
    server_name _;
    return 444;
}

这可以防止未绑定域名访问。

Q3:出现“upstream timed out”错误?

通常是因为后端服务响应太慢或连接不上。
检查后端应用是否启动、监听地址是否正确。
也可以在 proxy_pass 后加上超时参数:

proxy_connect_timeout 5;
proxy_read_timeout 60;
proxy_send_timeout 30;

效果验证:确保站点独立运行

配置完成后,用浏览器或 curl 分别访问两个域名:

curl -H "Host: shop-a.com" http://你的服务器IP
curl -H "Host: shop-b.com" http://你的服务器IP

正常会看到两个不同的页面内容。
接着你可以通过日志验证隔离:

# 查看shop-a的日志
sudo tail -f /var/log/nginx/shop-a.access.log
# 查看shop-b的日志
sudo tail -f /var/log/nginx/shop-b.access.log

只有访问对应域名时,对应日志才会写入。
如果在 shop-a 的日志里看到 shop-b 的请求,说明配置有误,需要检查 server_name 是否写错。

总结

通过以上步骤,你可以轻松实现 Nginx反向代理多外贸站点独立隔离配置。
关键在于为每个域名创建独立的 server 块,并为每个站点配置独立的日志、缓存和可能的限流规则。
遇到异常时,优先回看本文的避坑和高频问题部分,大部分都能快速解决。
如果你还涉及到HTTPS配额,可以在每个 server 块内加入SSL配置,原理相同。

如果你正在处理此类配置,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。

分享到:
上一篇
Ollama远程访问FRP内网穿透完整配置教程
下一篇
大模型推理服务器散热降噪改造实操方案
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 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意