没有URI的nginx proxy_pass

时间:2017-03-24 01:49:36

标签: nginx nginx-location

所以我目前在http://www.example.com有一个网站,我希望http://www.example.com/api/v2/<anyhting>的所有请求都被重定向到http://api.v2.com/<anything>。请注意,http://api.v2.com没有URI。 我的配置:

server {
    listen          80;
    server_name     www.example.com;

    location /api/v2/ {
        proxy_pass http://api.v2.com;
    }

    location / {
        index index.html;
        root  /var/www/example.com/htdocs;
    }
}

但是,这样,请求的代理是http://api.v2.com/api/v2/<anything>而不是http://api.v2.com/<anything>。 我已经注意到了:

location /api/v2 {
    proxy_pass http://api.v2/com/api;

按需要运行 - http://api.v2.com/api/v2/<anything>代理http://api.v2.com/api/<anything>

有没有办法实现第一个行为?我必须使用重写吗?我知道它与规范化的URI相关并且是预期的,只是想知道是否有办法实现它。

1 个答案:

答案 0 :(得分:0)

  

如果使用URI指定了proxy_pass指令,那么当请求传递给服务器时,与该位置匹配的规范化请求URI的部分将被指令中指定的URI替换。

server {
    listen          80;
    server_name     www.example.com;

     location /api/v2/ {
        proxy_pass http://api.v2.com/;
    }

    location / {
        index index.html;
        root  /var/www/example.com/htdocs;
    }
}

来源:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass

相关问题