mod_dir Apache продолжает перенаправлять к неправильному порту

У меня есть установка с HAProxy перед кэшем Лака, кто запрашивает сервер Apache2.

Apache слушает на внутреннем IP на Порте 12345 и настроен с UseCanonicalPhysicalPort Off предотвратить проливание из того единственного внутренним пользованием Порта. Я также протестировал различные комбинации UseCanonicalPhysicalPort и UseCanonicalName с On и Off. Однако несмотря на те канонические директивы, 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_dir, кажется, не работают. Моя конфигурация Apache похожа на это:

<VirtualHost 192.168.150.100:12345>
    ServerName www.example.org

    UseCanonicalPhysicalPort Off
    UseCanonicalName On

    <Directory "/var/www/www.example.org">
    [...]
</VirtualHost>

Существует ли способ предотвратить те перенаправления? Лучше всего должен был бы предотвратить те неправильные перенаправления в Apache, но я буду открыт для изменений конфигурации для Лакировки или HAProxy.

Примечание: Не предлагайте использовать порт 80, поскольку у меня есть больше чем один порт на Apache, используемом лаком (обходное решение для получения работы VHosts лучше), и таким образом это не опция.

1
задан 2 February 2015 в 12:38
1 ответ

URL-адрес каталога без косой черты не является каноническим URL-адресом для этого ресурса, поэтому mod_dir перенаправляет пользователя. Это общая рекомендация W3C.

Перенаправление с помощью вашего настраиваемого порта, вероятно, происходит из-за того, что ваш HAproxy или Varnish создает новый HTTP-запрос, который отправляется в Apache. Ваш apache получает самый первый запрос с уже существующим портом 12345 . Вот почему UseCanonicalName и UseCanonicalPhysicalPort кажутся неэффективными.

Но вы можете запретить Apache отправлять перенаправление, установив mod_dir DirectorySlash директиве Off .

Если тестовая страница на самом деле является существующим каталогом в вашей файловой системе, это должно работать нормально.

0
ответ дан 4 December 2019 в 08:07

Теги

Похожие вопросы