Я пытаюсь запустить Apache в Docker, за обратным прокси-сервером Traefik для https.Все работает, за исключением того, что когда я получаю доступ к URL-адресу папки без косой черты, Apache перенаправляет меня на не-https (то есть https://www.example.com/folder -> http://www.example.com/folder/). Это вызвано Apache mod_dir DirectorySlash, как описано здесь & здесь . Решение состоит в том, чтобы использовать правило перезаписи, которое срабатывает до DirectorySlash, например:
# Redirect to HTTPS before Apache mod_dir DirectorySlash redirect to HTTP
RewriteCond %{HTTP:X-Forwarded-Proto} =https
RewriteCond %{LA-U:REQUEST_FILENAME} -d
RewriteRule ^/(.*[^/])$ https://%{HTTP_HOST}/$1/ [R=301,L,QSA]
Однако, проблема в Traefikкажется, не устанавливает X-Forwarded- * заголовки . Вот снимок экрана заголовков, которые я получаю:
Вот ярлыки, которые я используюв моем файле Apache docker-compose:
labels:
- traefik.enable=true
- traefik.port=80
- traefik.frontend.rule=PathPrefix:/web #Apache is accessible under https://example.com/web/
Я пробовал различные комбинации меток, но независимо от того, что я делаю, заголовки x-forwarded- * всегда, кажется, отсутствуют. Например ( ref , ref ):
- "traefik.frontend.headers.SSLProxyHeaders=X-Forwarded-Proto:https"
- "traefik.frontend.headers.SSLRedirect=true"
Я даже пытался заставить Traefik добавлять свои собственные пользовательские заголовки и не могу их отобразить ( ref ):
- "traefik.https.middlewares.testHeader.Headers.CustomRequestHeaders.X-Script-Name=test"
... Однако, просто чтобы убедить себя, что я не сумасшедший, и это фактически работает за Traefik, & Traefik может добавить заголовки, которые я вижу, это работает и заставляет заголовок X-Frame-Options появляться в Firefox:
- traefik.frontend.headers.frameDeny=true
Итак, в заключение, вопрос заключается в следующем: почему Traefik не устанавливает заголовки x-forwarded- * (которые я затем могу использовать в моих Apache RewriteRules) - и как я могу заставить это сделать это?