
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;
}
しかし、これも機能しません。
どのような助けでも大歓迎です。
答え1
私の特定の問題に対する答えを見つけました。
2 つの API サーバーは同じ方法で構成されていないため、nginx 構成を少し調整する必要がありました。
- サーバーにはディレクティブ
b.com
が必要でしたproxy_set_header Host $host
が、rewrite
ディレクティブはありませんでした - サーバーはディレクティブ
a.com
を必要としたrewrite
が、proxy_set_header Host $host
これにより、次の(私にとっては機能する)構成が残ります。
server {
location /a {
proxy_pass https://a.com;
rewrite ^/a(.*)$ $1 break;
}
location /b {
proxy_set_header Host $host;
proxy_pass https://b.com;
}
}