带参数的nginx proxy_pass额外斜杠

时间:2017-04-30 23:57:53

标签: nginx proxy reverse-proxy

我想将请求转发给响应不同端口号的不同应用。转发端口号基于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来调试日志记录,但是从消息中很难说出发生了什么......

0 个答案:

没有答案