![如何设置 Apache 重定向到 ServerName 端口?](https://linux22.com/image/598839/%E5%A6%82%E4%BD%95%E8%AE%BE%E7%BD%AE%20Apache%20%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%20ServerName%20%E7%AB%AF%E5%8F%A3%EF%BC%9F.png)
我刚刚在 Ubuntu 上安装了 apache2 和 haproxy。Haproxy 监听端口 80,apache 监听端口 3080,后者对外部是隐藏的。
我的问题是,当使用没有尾随斜杠的文件夹名称时,例如example.com/some/folder
apache 会自动重定向到带有斜杠的相同地址,但也会重定向到错误的端口example.com:3080/some/folder/
!
Apache 文档建议我的问题出在 CanonicalName/Port 配置上,但这些配置的任何组合似乎都不起作用。我可能误解了什么?
我的虚拟主机:
<VirtualHost *:3080>
ServerName http://example.com:80
UseCanonicalName On
UseCanonicalPhysicalPort On
DirectoryIndex index.php index.html
DocumentRoot /var/www/main
<Directory /var/www/main>
Options -Indexes
Options -FollowSymLinks
AllowOverride All
<Files ~'^\.'>
Order allow,deny
Deny from all
Satisfy all
</Files>
</Directory>
</VirtualHost>
答案1
均不使用;
UseCanonicalName Off
UseCanonicalPhysicalPort Off
HAProxy 通常不会干扰发送的Host
标头,因此此配置应使用正确的标头构建生成的重定向Location
。如果这没有帮助,那么提供Location
响应中发送的确切标头?
顺便说一句,您ServerName
可以简化,并且可能不应该有您的虚拟主机没有监听的端口:
ServerName example.com