我有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。)