基本上,我正在尝试使用该proxy_pass
指令来调用远程 API。
到目前为止,这是我得到的:
server {
location /a {
proxy_pass https://a.com;
rewrite ^/a(.*)$ $1 break; # no trailing slash, defined in application code
}
location /b {
proxy_pass https://b.com;
rewrite ^/b(.*)$ $1 break; # no trailing slash, defined in application code
}
location / {
# Rest of configuration
}
}
我坚持可以location /a
正常工作但location /b
由于某种原因不能正常工作的事实(HTTP/404
)。
location /b
我尝试以这种方式使用斜杠
location /b/ {
proxy_pass https://b.com/;
rewrite ^/b/(.*)$ $1 break;
}
但这也不起作用。
非常欢迎任何帮助。
我找到了我的特定问题的答案。
两个 API 服务器的配置方式不同,我不得不稍微调整一下 nginx 配置。
b.com
需要一个proxy_set_header Host $host
指令并且没有rewrite
指令a.com
需要rewrite
指令但不需要proxy_set_header Host $host
这给我留下了以下(为我工作)配置: