如何设置 Apache 重定向到 ServerName 端口?

如何设置 Apache 重定向到 ServerName 端口?

我刚刚在 Ubuntu 上安装了 apache2 和 haproxy。Haproxy 监听端口 80,apache 监听端口 3080,后者对外部是隐藏的。

我的问题是,当使用没有尾随斜杠的文件夹名称时,例如example.com/some/folderapache 会自动重定向到带有斜杠的相同地址,但也会重定向到错误的端口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

相关内容