如何在nginx中重写后获取上游服务器中的请求URL

时间:2014-11-26 11:31:25

标签: nginx

我有nginx作为代理服务器:client - > nginx(server1:80) - >服务器(server2:81) 客户端从服务器请求json资源(HAL格式),其中服务器在JSON + HAL资源内生成所需的URI。

我在nginx配置中使用proxy_pass

location /context {
    proxy_cache one;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Server $host;
    proxy_http_version 1.1;
    proxy_set_header Connection "";
    proxy_redirect off;
    rewrite /context(.*) $1 break;
    proxy_pass http://server2:81;
}

问题是来自server2的生成的URI不包含上下文根/context 例如:
客户请求URI - > http://server1/context/foo/bar
server1(nginx)用于请求server2的URI - > http://server2:81/foo/bar

响应JSON中生成的URI为http://server1/foo/bar/baz,因为它应该是http://server1/context/foo/bar/baz

有没有办法告诉server2 GET标头是/context/foo/bar哪个server2在响应中生成了正确的URI? (它是一个.NET服务器,他们使用HttpHelper类来生成URI。)

0 个答案:

没有答案