
Я только что сделал свежую установку 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