我想将请求转发给响应不同端口号的不同应用。转发端口号基于URL。例如,要访问localhost:5000/xxxx
,我想使用/p/5000/xxxx
,即
https://10.58.10.15/p/5000/jobs?id=0 ==> http://127.0.0.1:5000/jobs?id=0
我使用以下配置:
location ~ ^/p/(\d+)/(.*)$ {
proxy_pass http://127.0.0.1:$1/$2$is_args$args;
proxy_set_header Accept-Encoding "";
proxy_set_header Host "$host/p/$1";
}
但是,当我尝试上述链接时,似乎转发请求格式不正确。我使用curl来调试代理响应。当我发出以下命令时:
curl -k -i https://10.58.10.15/p/5000/jobs?id=0
我收到以下答案:
HTTP/1.1 302 Found
Server: nginx/1.10.3
Date: Sun, 30 Apr 2017 23:46:14 GMT
Content-Length: 0
Connection: keep-alive
Location: http://10.58.10.15/p/5000/jobs/?id=0
我们可以看到/
和jobs
之间有一个额外的?id=0
。
我的配置有什么问题吗?
我怎么想调试我的配置?我已经设置了nginx来调试日志记录,但是从消息中很难说出发生了什么......