我有一个HAProxy的设置,在一个Varnishcaching的前面请求一个Apache2服务器。
Apache正在监听端口12345上的内部IP,并configuration了UseCanonicalPhysicalPort Off以防止该内部使用端口溢出。 我也用On和Offtesting了UseCanonicalPhysicalPort和UseCanonicalName不同组合。 但是,尽pipe有这些规范的指令,Apache2在接收到一个没有结尾斜杠的目录的请求时似乎有问题:
UCPP: On, UCN: Not set: Request: https://www.example.org/test-page Response: Redirect(301) to http://www.example.org:12345/test-page/ UCPP: On, UCN: On Request: https://www.example.org/test-page Response: Redirect(301) to https://www.example.org:12345/test-page/ UCPP: Off, UCN: Off Request: https://www.example.org/test-page Response: Redirect(301) without Location header
这当然是行不通的,因为这个港口只是内部的。 该网站正在运行一个Joomla,这与设置工作正常,只是那些将从mod_dirredirect的文件夹似乎不工作。 我的Apacheconfiguration如下所示:
<VirtualHost 192.168.150.100:12345> ServerName www.example.org UseCanonicalPhysicalPort Off UseCanonicalName On <Directory "/var/www/www.example.org"> [...] </VirtualHost>
有没有办法来阻止这些redirect? 最好的办法是防止Apache内的错误redirect,但是我可以修改Varnish或HAProxy。
注意:请不要build议使用80端口,因为我在清漆上使用了Apache的多个端口(解决方法使VHosts更好地工作),因此这是不行的。
没有结尾斜杠的目录的URL不是此资源的规范URL,这就是mod_dirredirect用户的原因。 这是一个通用的W3Cbuild议。
您的自定义端口redirect可能是因为您的HAproxy或Varnish正在创build一个新的HTTP请求发送到Apache。 你的apache收到12345端口已经存在的第一个请求。 这就是为什么UseCanonicalName和UseCanonicalPhysicalPort似乎无效。
但是,您可以通过将mod_dir DirectorySlash指令设置为Off来防止apache发送redirect。
如果test-page实际上是文件系统上的一个现有目录,这应该可以正常工作。