Nginx反向代理多外贸站点统一入口
为什么需要统一入口?
做外贸生意时,经常需要管理多个面向不同国家或产品的站点。
如果每个站点都独立部署一台服务器,成本高、管理麻烦。
通过 Nginx 反向代理,你只需要一台服务器和一个公网 IP,就能把多个外贸站点统一到一个入口,还能集中处理 SSL 证书和流量分发。
本文适合刚接触服务器的新手,会从零开始带你完成整个配置。
操作前请确保你有一台已安装 Nginx 的 Linux 服务器(如 Ubuntu 或 CentOS)。
先准备好这些条件
- 一台服务器(建议 2 核 2G 以上),已安装 Nginx(版本 1.18 或以上)。
- 一个公网 IP(或域名绑定到服务器)。
- 多个外贸站点的域名(例如 shop.com、blog.com 等),并解析到服务器 IP。
- 每个站点在后端已经正常运行(可以是本机不同端口,也可以是其他服务器)。
开始配置 Nginx 反向代理
Nginx 的配置文件通常在 /etc/nginx/nginx.conf 或 /etc/nginx/conf.d/ 目录下。
为每个站点创建一个单独的配置文件,结构更清晰。
1. 创建站点配置文件
sudo nano /etc/nginx/conf.d/shop.conf
2. 编写反向代理配置
以下是一个典型的外贸站点代理配置,假设 shop.com 运行在本地 3000 端口:
server {
listen 80;
server_name shop.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
重点:proxy_pass后面的地址必须确保能正常访问。proxy_set_header这几行是为了把客户端的真实信息传给后端。
3. 添加 SSL 证书(建议必须)
外贸站点建议开启 HTTPS。
用 Certbot 免费获取证书:
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d shop.com -d www.shop.com
Certbot 会自动修改配置文件。
如果手动配置,在 server 块内加 SSL 相关参数即可。
4. 检查并重载 Nginx
sudo nginx -t # 测试配置语法
sudo systemctl reload nginx # 重载生效
容易踩的坑
端口冲突
如果后端服务已经占用了 80 或 443 端口,Nginx 无法监听。
建议后端改为其他端口(如 3000、5000)。
路径问题
如果后端站点使用了绝对路径,或前端资源要跨域,可能需要额外设置 proxy_redirect 和 add_header。
新手可以先保持简单的 / 代理,后续再调整。
域名解析延迟
把域名解析到服务器后,可能需要等待几分钟到几小时生效。
可以用 nslookup 或 ping 检查是否已指向你的服务器 IP。
检查效果
浏览器访问
直接访问 http://shop.com 或 https://shop.com,如果能正常显示后端页面,说明代理成功。
命令行验证
curl -I http://shop.com
返回 200 或 301/302(重定向)说明正常工作。
如果是 502,说明 proxy_pass 指向的后端没启动。
高频问题解答
Q:多个站点都在同一台服务器,需要多个公网 IP 吗? A:不需要。
Nginx 通过 server_name 区分不同域名,只要所有域名都解析到同一个 IP 即可。
Q:后端是 Windows 服务器,可以代理吗? A:可以。
只要后端能通过网络访问,proxy_pass 直接写目标地址,例如 http://192.168.1.100:8080。
Q:配置后访问出现 404 怎么办? A:先排查后端服务是否正常运行,再检查 proxy_pass 的路径是否匹配后端路由。
如果后端使用了子路径,可能需要加上 proxy_pass http://127.0.0.1:3000/;(注意末尾斜杠)。
总结
通过本文的配置,你已经能用一台服务器通过 Nginx 反向代理管理多个外贸站点。
核心思路是每个域名一个 server 块,统一代理到对应后端。
遇到问题优先检查 nginx -t 和后端是否启动,大部分新手错误都能在这两步解决。
如果你需要更复杂的负载均衡或缓存配置,可以进一步学习 Nginx 的 upstream 模块。