Я использую модифицированную версию официальной библиотеки Docker php: 7.0.30-apache image за обратным прокси (traefik).
Изменения включают в себя замену обслуживающего порта 80 по умолчанию для Apache2 на порт 1025. (openshift не разрешает корневые операции, такие как открытие портов внутри док-контейнера ниже 1024)
Теперь при использовании перенаправлений внутри контейнера apache2 игнорирует HTTP_X_FORWARDED_PORT
заголовок и перенаправляет на правильное имя хоста с добавленным портом 1025.
Пример:
Приложение работает в http://www.app.com
(порт 80) публично, внутри http://app.local:1025
и при выполнении header("Location: web");
он перенаправляет на http://www.app.com:1025/web
вместо http://www.app.com/web
Я также заметил следующее поведение:
Когда используешь .htaccess
файлы для перенаправления на https
браузеры отображают "too many redirects error"
потому что оба HTTP_X_FORWARDED_PORT
а также HTTP_X_FORWARDED_PROTO
игнорируются
Что мне нужно сделать для .htaccess
и php header("Location: xyz");
перенаправляет работу и уважает перенаправленные заголовки за обратным прокси?
Я понимаю, что это правильное поведение для запроса, поступающего с обратного прокси-сервера на хост apache, мне просто нужно настроить apache2, чтобы он реагировал на запрос, который был сделан к обратному прокси-серверу.
Задача ещё не решена.
Других решений пока нет …