Назад | Перейти на главную страницу

Apache ReverseProxyPass перенаправляет на http, а не на https

У меня есть установка обратного прокси с использованием apache mod_proxy:

<VirtualHost *:443>
   ServerName reverse.server.com  
   ProxyPass / http://10.1.9.11:3000/
   ProxyPassReverse / http://10.1.9.11:3000/
   ProxyPreserveHost on
   ...snip ssl stuff...
</VirtualHost>

В большинстве случаев это работает нормально. Проблема в том, что внутренний сервер выполняет перенаправление. Хотя proxypassreverse должен улавливать местоположение, и кажется, что он перенаправляет на http://reverse.server.com а не https://reverse.server.com. Так что он наполовину работает, адрес меняется правильно, но протокол остается внутренним сервером.

Я не понимаю, почему он это делает, поскольку прокси-соединение - это SSL - есть идеи?

ProxyPassReverse не могу исправить такого рода перенаправления. Есть 2 способа решить проблему:

  • Используйте HTTPS для внутреннего сайта. например ProxyPass / https:... и ProxyPassReverse / https: (на самом деле последний в вашем случае не требуется).
  • Используйте mod_headers в обратном прокси: Header edit Location ^http: https:
  • Используйте mod_rewrite в обратном прокси, чтобы изменить перенаправление.

У меня такая же проблема. Мы нашли 2 идеи, которые стоит попробовать, не знаю, действительно ли это работает: 1 / используйте RequestHeader set X-Forwarded-Protocol "https" => http://toroid.org/ams/etc/mixing-http-and-https

2 / используйте переменную httpsindicatorheader (это веб-сфера), чтобы указать через сервер приложений, что первоначальный запрос был https. Тогда каждое перенаправление будет на https