我有一个NGINX代理服务器,它反向代理在某个端口上运行的本地NGINX服务器。我 希望这一切都保持在同一个域中,使访问者看起来无缝。像这样的东西
http://example.com/foo/bar.html ===> http://127.0.0.1:1280/bar.html
如果我故意触发文件未找到错误,例如
,这样就可以了http://example.com/foo/this-file-doesnt-really-exist-on-server.html
它按预期通过并保持在该地址。但是,如果我导航到存在的文件,例如
http://example.com/foo/bar.html
而是将浏览器重定向到
http://127.0.0.1:1280/bar.html
由于该服务器只监听localhost,浏览器会启动Page Not Found(404)错误
这令我感到困惑,我已经尝试了一切,我已经在Google上搜索了一个多星期的尝试数百种解决方案而没有任何成功或改变,Iv尝试了几十种与这些标题的组合
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
并尝试过几十种不同的代理备份,包括完全禁用代理重定向
proxy_redirect http://127.0.0.1:1285/ http://example.com/foo/;
或
proxy_redirect off;
我已经放弃并认为在NGINX中完全不可能,如果有人有任何帮助,我会非常感激
答案 0 :(得分:1)
我认为你正在寻找 proxy_pass ,而不是 proxy_redirect :
location / {
# include your proxy params
# ...
proxy_pass http://localhost:1280;
}
请参阅有关此内容的nginx文档:
答案 1 :(得分:0)
我发现问题是缓存。我有开放文件缓存,快速cgi缓存,代理缓存和开放日志缓存启用。在禁用了所有这些奇怪的怪癖之后,这里提到的一个到目前为止已经停止了。