Назад | Перейти на главную страницу

Прокси весь путь URL к haproxy от nginx

У меня есть 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;
    ...
}

Видеть этот документ для подробностей.