У меня есть nginx в точке входа на сервер. которые обрабатывают SSL-соединение и отправляют HTTP
запрос в /api/v1/
в HAproxy для балансировки. это моя конфигурация nginx:
location /api/v1/ {
proxy_pass http://127.0.0.1:8585/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
и конфигурация HAproxy:
frontend haproxy_entry
bind *:8585
mode http
log global
acl is_api url_beg /api/v1/
use_backend api if is_api
проблема в том, что я должен пройти /api/v1/
путь дважды. если я прошу https://servername.com/api/v1/
haproxy не справился бы с этим должным образом, если бы:https://servername.com/api/v1/api/v1/
все нормально. Как я могу это исправить?
В proxy_pass
инструкция включает необязательный URI, который используется для изменения URL-адреса перед его передачей вверх по течению.
В вашем вопросе proxy_pass
инструкция включает URI /
, что в сочетании с location
значение, вызывает /api/v1/
часть исходного URL-адреса, которую нужно заменить на /
.
Например: https://example.com/api/v1/foo
переводится на http://127.0.0.1:8585/foo
.
Похоже, вам это не нужно. Чтобы отключить эту функцию, просто удалите часть URI.
Например:
location /api/v1/ {
proxy_pass http://127.0.0.1:8585;
...
}
Видеть этот документ для подробностей.