NGINX始终重定向到localhost和端口

时间:2014-09-08 20:39:09

标签: redirect nginx reverse-proxy

我有一个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中完全不可能,如果有人有任何帮助,我会非常感激

2 个答案:

答案 0 :(得分:1)

我认为你正在寻找 proxy_pass ,而不是 proxy_redirect

location / {
    # include your proxy params
    # ...
    proxy_pass http://localhost:1280;
}

请参阅有关此内容的nginx文档:

答案 1 :(得分:0)

我发现问题是缓存。我有开放文件缓存,快速cgi缓存,代理缓存和开放日志缓存启用。在禁用了所有这些奇怪的怪癖之后,这里提到的一个到目前为止已经停止了。