2016-07-26 80 views
0

我要代理请求这样的: http://myproxy.com/api/folder1/result1?test=1
http://myproxy.com/api/folder3447/something?var=oneNginx的proxy_pass所有的URL参数

等效目的地:http://destination.com/folder1/result1?test=1http://destination.com/folder3447/something?var=one,实际上只有域的变化和所有子文件夹,而params将被保留

在配置中的位置如下所示:

location ~* ^/api/(.*) { 
    proxy_pass http://destination.com/$1$is_args$args; 
    proxy_redirect off; 
    proxy_http_version 1.1; 
    proxy_set_header Connection ""; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    #proxy_set_header Host $http_host; 
    } 

回答

1

您应该可以稍微简化您的配置:

location /api/ { 
    // Note the slash at end, which with the above location block 
    // will replace "/api/" with "/". This will not work with regex 
    // locations 
    proxy_pass http://destination.com/; 
    proxy_redirect off; 
    proxy_http_version 1.1; 
    proxy_set_header Connection ""; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
}