【发布时间】:2022-01-20 19:22:15
【问题描述】:
我在单个实例上有多站点设置,我的意思是使用站点 ID,我正在切换内容、徽标主题颜色等,并且每个站点都有不同的域名。
路径
http://localhost:3000/{{site_id}}/
http://localhost:3000/{{site_id}}/about-us/
http://localhost:3000/{{site_id}}/product/1232/slug
etc...
举例
http://localhost:3000/1 => site-a.local
http://localhost:3000/2 => site-b.local
http://localhost:3000/3 => site-c.local
我用的是nginx,从80端口反向代理到3000。如何在nginx中转发站点id
server {
listen 80;
listen [::]:80;
server_name site-a.local;
location ~ /(.*) {
proxy_pass http://localhost:3000/1;
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;
}
}
server {
listen 80;
listen [::]:80;
server_name site-b.local;
location ~ /(.*) {
proxy_pass http://localhost:3000/2;
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;
}
}
由于某种原因,上述想法不起作用,有人可以帮助我吗?
【问题讨论】:
-
什么不起作用?我是对的,您正在尝试将多个具有不同域的 nginx 服务器块代理到相同的上游
127.1:3000但具有不同的位置? -
是的正确,我有一个应用程序在 3000 端口运行,它显示基于第一个路径变量 /{site_id} 的不同内容,所以我希望 nginx 将不同的域路由到不同的 site_id,我不向用户显示 site_id 的内容,我想像这样屏蔽
http://localhost:3000/1/ => site-a.local