所以我目前在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相关并且是预期的,只是想知道是否有办法实现它。
答案 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