6

我有一个处理 PHP 请求的 nginx 服务器,但它被配置为侦听非标准端口(端口 12345 或其他端口)。我无法更改监听端口,因为公司 IT 说“不”。

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

我有一些需要放置的静态 301 重定向,但出现了意外行为。

site.conf "server { }" 块中的示例重定向:

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

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

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

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

4

1 回答 1

2

您可以提供更明确的重写。尝试以下操作:

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

我假设您打算使用^/foo/而不是^/foo$,因为这^/foo$是一个非常具体的情况。只需根据需要进行修改。

于 2012-12-17T20:23:39.150 回答