我在服务器的入口点有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传递给上游之前修改URL。
在你的问题中,该proxy_pass
语句包括一个URI /
,该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;
...
}
有关详细信息,请参见此文档。