Nginx 重定向前修剪NGNIX中的URL

Nginx 重定向前修剪NGNIX中的URL,nginx,Nginx,我可以将ngnix配置为重定向http://mydomain/group1到“Group1”服务器和http://mydomain/group2发送到“Group2”服务器。但是我需要删除组名并将剩余的URL传递给后端服务器 i、 e 应作为http://mydomain/index.html和类似的“Group2” 这可能吗 下面是我的配置文件 upstream group1 { server 10.18.1.10; } upstrea

我可以将ngnix配置为重定向
http://mydomain/group1
到“Group1”服务器和
http://mydomain/group2
发送到“Group2”服务器。但是我需要删除组名并将剩余的URL传递给后端服务器

i、 e

应作为
http://mydomain/index.html
和类似的“Group2”

这可能吗

下面是我的配置文件

        upstream group1 
    {
        server 10.18.1.10;
    }
    upstream group2 
    {
        server 10.18.1.11;
    } 

    server 
    {
        listen       80;
        server_name  10.18.1.9;

        location /group1/ 
        {
            proxy_pass http://group1;
            proxy_redirect     off;
            proxy_set_header   Host       $host;
            proxy_set_header   X-Real-IP  $remote_addr;
        }

        location ~ /group2/(.*) 
        {

            proxy_pass http://group2.$http_host/$1;
            proxy_redirect     off;
            proxy_set_header   Host       $host;
            proxy_set_header   X-Real-IP  $remote_addr;

        }

    }

试着这样做:

location ~* ^/group(\d*)/(.*) {
      proxy_pass http://group$1.$http_host/$2;
}
这个snipplet所做的是捕获所有与regexp模式匹配的请求
^/group(\d*)/(.*)
表示“获取以/group/开头的所有内容”,同时将group后面的数字和斜杠后面的尾随部分捕获为变量。变量是按“捕捉”顺序排列的数字。因此,在该位置内,您可以使用它们使用原始请求中的“参数”将请求重写为您想要的任何内容。在这种情况下,您可以使用$1(组后的数字)通过主机名指示后端服务器,并使用$2来维护尾部部分$http_主机是对“主机:”http头的标准nginx引用。如果您有“静态”后端,您可以在代理通行证中省略除$2以外的所有内容。

重定向实际上是指代理到后端?是的..我希望后端服务器提供请求。我感谢您的帮助。这个$1和$2以及$http_主机代表什么?“你能帮我理解这里发生了什么吗?”奇怪的托米在回答中解释道:“我按照你的解释做了修改,但它说的是坏网关,我做得对吗?”?。我已经为您的应用程序添加了conf文件reference@FreakyThommi检查错误日志中的真实内容。您需要查看nginx试图为您获取的结果URL。2013/12/10 17:37:18[错误]7220#0:*1135未定义解析程序来解析group2.10.18.1.9。我是否需要使用“重写”从URL修剪group1?我的配置现在附在问题后面
location ~* ^/group(\d*)/(.*) {
      proxy_pass http://group$1.$http_host/$2;
}