Nginx反向代理到两个服务
我正在运行nodeJS脚本Nginx反向代理到两个服务,nginx,Nginx,我正在运行nodeJS脚本 在localhost:9001上 它正在nginx反向代理后面运行 它接受/v{{{version}/{{lang}}/.. 例如: domain.com/api/v1/en/news domain.com/api/v2/fr/news domain.com/api/v3/en/news 直到现在我才知道这是nginx location /api/ { proxy_set_header X-Real-IP $remote_addr; p
- 在
localhost:9001上
- 它正在nginx反向代理后面运行
- 它接受
/v{{{version}/{{lang}}/..
domain.com/api/v1/en/news
domain.com/api/v2/fr/news
domain.com/api/v3/en/news
location /api/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://localhost:9001/;
}
一切正常
我现在的目标是在localhost:9002
上运行额外的(相同的)脚本,它将接受v4
请求。和v3
,v2
和v1
仍将由localhost:9001
所以我希望请求domain.com/api/v4/en/news
被路由到localhost:9002
我把这个放在当前规则上面,就像这样
location ~* /api/v4/(.*)$ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://localhost:9002/v4/$1;
}
location /api/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://localhost:9001/;
}
请求/v3/。
被路由到本地主机:9001
(如预期),但/v4/。
返回502
有指针吗?500-不是502。这意味着你在9001端口运行的应用程序正在崩溃,请检查应用程序日志,我得到
502
而不是500
apt得到安装lsof
然后lsof-I:9002
你看到了什么?也不需要正则表达式。这只是一个映射。因此,修复位置:location/api/v4/{
和proxy\u passhttp://localhost:9002/v4/
行了!如果你愿意,你可以把它写下来作为答案,这样我就可以标记它了
location /api/v4/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://localhost:9002/v4/;
}
location /api/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://localhost:9001/;
}