Nginx
代理從 nginx 到 haproxy 的整個 url 路徑
我在伺服器的入口點有 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; ... }
有關詳細資訊,請參閱此文件。