В общем, я пытаюсь использовать директиву 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
Это оставляет мне следующую (работающую для меня) конфигурацию:
server {
location /a {
proxy_pass https://a.com;
rewrite ^/a(.*)$ $1 break;
}
location /b {
proxy_set_header Host $host;
proxy_pass https://b.com;
}
}