我需要为下面的url模式设置proxy_pass。
location ~ ^/hosts/bu/(.*)/app/(.*)$ {
proxy_pass http://appserver.cnma.com:3000/hosts/bu/$1/app/$2;
}
当我尝试使用URL时,它没有正确传递第二个参数。请让我知道我哪里出错了。
答案 0 :(得分:0)
Orig docs说:
如果指定了proxy_pass而没有URI,请求URI将以与处理原始请求时客户端发送的格式相同的形式传递给服务器,或者在处理更改的URI时传递完整的规范化请求URI: / p>
location /some/path/ {
proxy_pass http://127.0.0.1;
}
所以足够了:
proxy_pass http://appserver.cnma.com:3000$request_uri;
答案 1 :(得分:0)
您可以在使用正则表达式时在nginx中使用命名捕获
location ~ ^/hosts/bu/(.*)/app/(.*)$ {
proxy_pass http://appserver.cnma.com:3000/hosts/bu/$1/app/$2;
}
你可以像这样修改块到下面
location ~ ^/hosts/bu/(?<loc1>.+)/app/(?<loc2>.+)$ {
proxy_pass http://appserver.cnma.com:3000/hosts/bu/$1/app/$loc2;
}