使用ngnix配置proxy_pass多个参数

时间:2015-07-03 11:05:17

标签: nginx proxypass

我需要为下面的url模式设置proxy_pass。

location  ~ ^/hosts/bu/(.*)/app/(.*)$ {
  proxy_pass   http://appserver.cnma.com:3000/hosts/bu/$1/app/$2;
}

当我尝试使用URL时,它没有正确传递第二个参数。请让我知道我哪里出错了。

2 个答案:

答案 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;
}