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.comshop-b.com,并且已经解析到你的服务器IP。
  2. 后端服务:假设你已经用Docker或裸机跑了两个Web应用,分别监听本地的 127.0.0.1:3001127.0.0.1:3002
提示:如果你没有两个后端服务,可以先用两个简单的 index.html 页面本地开临时端口测试,比如用Python:
python3 -m http.server 3001 --directory /var/www/site-apython3 -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_logerror_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_aproxy_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
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意