Nginx proxy_pass 所有url参数

dim*_*zak 2 nginx

我想代理这样的请求: http://myproxy.com/api/folder1/result1?test=1
http://myproxy.com/api/folder3447/something?var=one

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

配置中的位置如下所示:

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;
  }
Run Code Online (Sandbox Code Playgroud)

Jos*_*ald 6

您应该能够稍微简化您的配置:

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;
}
Run Code Online (Sandbox Code Playgroud)