2

我在端口 8097 上运行 Apache,并且 Nginx 代理请求它:

location / {
    proxy_pass         http://127.0.0.1:8097;

    proxy_redirect          off;
    proxy_set_header        Host            $host;
    proxy_set_header        X-Real-IP       $remote_addr;
    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    client_max_body_size    10m;
    client_body_buffer_size 128k;
    proxy_connect_timeout   90;
    proxy_send_timeout      90;
    proxy_read_timeout      90;
    proxy_buffers           32 4k;
}

Apache 配置(有意义的部分):

    <Directory /home/some/htdocs>
            Options FollowSymLinks
            Options -Indexes
            AllowOverride All
            Order allow,deny
            allow from all
    </Directory>

那么会发生什么:当我转到www.mysite.com/photos并且存在一个目录时, photosApache 将我重定向到该目录并添加了斜杠。但由于某种原因,它实际上将我重定向到www.mysite.com:8097/photos/我在浏览器中看到这个地址,我实际上不应该这样做:

HTTP/1.1 301 Moved Permanently
Server: nginx/1.2.4
Date: Thu, 01 Nov 2012 10:28:13 GMT
Content-Type: text/html; charset=iso-8859-1
Connection: keep-alive
Location: http://www.mysite.com:8097/photos/

我知道我可以通过UseCanonicalName On(不是最好的解决方案 - 如果我没有规范名称怎么办?)但我仍然想知道,实际的 apache 端口是如何通过这种重定向暴露的(但所有其他重写和重定向工作正常)。

4

2 回答 2

2

我找到了一种在 nginx 配置中修复它的方法。需要将端口添加到主机标头

proxy_set_header        Host            $host:$server_port;
于 2013-01-13T18:29:29.760 回答
0

听起来很傻,但您的浏览器可能已经缓存了 301。我通过在另一个浏览器中打开解决了类似的问题。

乍一看你的配置看起来不错

于 2012-12-11T23:47:38.097 回答