Как настроить 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

Связанный контент