301在代理后面运行非标准端口的nginx机器上重定向

时间:2012-12-17 19:07:01

标签: redirect nginx reverse-proxy

我有一个处理PHP请求的nginx服务器,但它被配置为侦听非标准端口(端口12345或其他东西)。我不能改变监听端口,因为企业IT部门说“不。”

数据中心有一个代理服务器将来自www.domain.com:80的请求转发到端口12345上的nginx框。

我有一些静态301重定向,我需要将其放置到位,但是我遇到了意想不到的行为。

示例重定向到site.conf“server {}”block:

rewrite ^/foo$ /bar/foo/ permanent;

当我尝试访问www.domain.com/foo时,会发生重定向,但会尝试将浏览器转发到www.domain.com:12345/bar/foo /

我的问题是,如何让nginx将用户重定向到正确的端口(www.domain.com/bar/foo /)?

也许更好的问题是,做我要问的正确方法是什么?有50多个重定向需要进入,我宁愿不为每个重定向创建一个“位置”部分。

1 个答案:

答案 0 :(得分:2)

您可以提供更明确的重写。请尝试以下方法:

rewrite ^/foo/ $scheme://www.domain.com:80/bar$request_uri permanent;

我认为您打算使用^/foo/代替^/foo$,因为^/foo$是一个非常具体的案例。只需根据需要进行修改。