Nginx反向代理配置多个独立外贸站点完整教程
核心答案
用Nginx反向代理可以在一台服务器上轻松部署多个独立外贸站点。
只需为每个站点创建独立的server块,通过proxy_pass将不同域名或路径的请求转发到对应后端服务(如Node.js、PHP或静态文件)。
配置完成后,各站点数据隔离、互不影响,且能统一管理SSL证书。
前置准备
- 一台Linux服务器(推荐CentOS 7+或Ubuntu 20.04),建议使用云服务器如泽御云等正规服务商,确保性能稳定。
- 至少两个已解析的域名(如site1.com、site2.com),指向服务器IP。
- 各站点的后端服务已正常运行(例如分别监听3000、4000端口)。
- 服务器已安装Nginx(若未安装,见下文第一步)。
分步操作
1. 安装Nginx
# CentOS/RHEL
sudo yum install epel-release -y
sudo yum install nginx -y
# Ubuntu/Debian
sudo apt update
sudo apt install nginx -y
安装后启动并设置开机自启:
sudo systemctl start nginx
sudo systemctl enable nginx
2. 创建站点配置文件
Nginx配置文件通常位于/etc/nginx/conf.d/目录。
建议每个站点一个文件,例如:
/etc/nginx/conf.d/site1.conf/etc/nginx/conf.d/site2.conf
示例:site1.com
server {
listen 80;
server_name site1.com www.site1.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;
}
}
示例:site2.com(监听不同端口4000)
server {
listen 80;
server_name site2.com www.site2.com;
location / {
proxy_pass http://127.0.0.1:4000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
3. 配置SSL证书(推荐)
使用Certbot自动申请免费Let's Encrypt证书:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d site1.com -d www.site1.com
sudo certbot --nginx -d site2.com -d www.site2.com
Certbot会自动修改Nginx配置,将HTTP重定向到HTTPS。
4. 检查并重启Nginx
sudo nginx -t # 测试配置语法
sudo systemctl reload nginx # 重新加载
浏览器分别访问https://site1.com和https://site2.com,验证是否正常显示对应站点。
避坑指南
- proxy_set_header:必须添加
Host和X-Real-IP,否则后端应用无法获取真实客户端IP,某些外贸支付回调可能失败。 - 端口冲突:确保各站点的后端监听不同端口。若使用Unix Socket则避免文件路径冲突。
- 防火墙:开放80和443端口:
sudo firewall-cmd --permanent --add-service=http --add-service=https。 - 静态资源:若站点包含大量图片/视频,建议在Nginx层配置缓存或使用CDN,减少后端压力。
- 日志分离:可在每个server块内指定
access_log /var/log/nginx/site1.access.log main;,便于排查各站点问题。
高频问题解答
Q1: 多个站点能用不同端口区分吗?
可以,但推荐用不同域名更专业。
如果域名只有一个,可以通过不同路径(如/site1)反向代理,但外贸站通常一个域名一个站,避免路径混淆影响SEO。
Q2: 配置完成后访问显示“502 Bad Gateway”
说明反向代理的后端未启动或端口错误。
检查后端服务是否运行,并核对proxy_pass中的IP和端口。
Q3: 如何为其中一个站点单独配置HTTPS?
和上面步骤一样,对每个域名分别运行certbot,它会自动处理。
也可以手动配置证书路径。
Q4: 服务器需要多大才能支持多个外贸站?
1核2G起步,具体取决于站点流量和应用类型。
外贸站若以静态页面为主,可考虑使用泽御云等提供的轻量云服务器,性价比高。
建议根据实际负载监控调整。
如果你正在处理Nginx反向代理配置多个独立外贸站点,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。