【发布时间】:2016-01-18 00:48:00
【问题描述】:
我想使用 proxy_pass 将请求代理到另一台服务器,同时删除匹配的路径前缀。我认为这样做的一种方法如下;
location /a/ {
proxy_pass https://website.com/
}
例如对http://localhost/a/b.html 的请求将被代理到https://website.com/b.html。
据我所知,在 NGINX 上的非商业版本中存在的问题是 website.com 的 DNS A 记录将在启动时永久加载和缓存。我已经看到了一种通过在 proxy_pass 指令中使用诸如 $request_uri 之类的变量来解决此问题的技术,从而迫使 NGINX 根据记录的 TTL 重新解析 DNS。
例如
location /a/ {
rewrite ^/a/(.*) /$1 break;
proxy_pass https://website.com/$request_uri
}
不幸的是,上面的方法似乎不起作用,因为它似乎仍然将 /a/ 前缀传递给上游。
基本上,我在这里想要实现的只是代理请求,同时删除路径前缀,这样 DNS 记录就不会永远被缓存。
谢谢。
【问题讨论】: