По сути, я пытаюсь использовать 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
Я нашел ответ на свой конкретный вопрос.
Два сервера 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;
}
}