Перенаправление Apache http на https с помощью обратного прокси-сервера Squid

Перенаправление Apache http на https с помощью обратного прокси-сервера Squid

У меня есть веб-сервер, на котором запущен сайт example.com. Я настроил перенаправление с http на https на apache; см. ниже

<VirtualHost *:80> 
  ServerName www.example.com 
  Redirect permanent / https://www.example.com
</VirtualHost>

<VirtualHost *:443> 
  ServerName www.example.com 
  DocumentRoot /usr/www/htdocs 
  SSLEngine On #etc... 
</VirtualHost>

Запрос по http успешно перенаправлен внутренне.

Итак, проблема в том, что внешний запрос должен пройти через Squid Reverse Proxy. И при попытке подключения к http://example .com устанавливается http-соединение. Не https, перенаправление не удается.

Если мы введем URL какhttp://example.com/index.html, соединение успешно перенаправляется на https.

Есть ли у кого-нибудь идеи, как решить эту проблему?

решение1

При попытке подключения к http://example.comустанавливается HTTP-соединение, а не HTTPS, и перенаправление не выполняется.

http://example.comОдна из проблем, с которой вы, похоже, столкнулись, заключается в том, что в конфигурации вашего виртуального хоста Apache нет записей для . wwwПрефикс технически является поддоменом example.comи, следовательно, считается отдельным сайтом для разрешения. Исключая любые проблемы со Squid, простым решением будет изменение ваших виртуальных хостов для учета различных вариаций example.comс помощью ServerAliasдирективы:

# Redirect http://example.com and http://www.example.com
# to https://www.example.com

<VirtualHost *:80> 
   ServerName example.com
   ServerAlias www.example.com
   Redirect permanent / https://www.example.com
</VirtualHost>

# Serve https://example.com and https://www.example.com
# from the same DocumentRoot

<VirtualHost *:443> 
  ServerName example.com 
  ServerAlias www.example.com
  DocumentRoot /usr/www/htdocs 
  SSLEngine On #etc... 
</VirtualHost>

Обратите внимание, что вы также можете перенаправить https://example.comна https://www.example.com:

# Redirect http://example.com and http://www.example.com
# to https://www.example.com

<VirtualHost *:80> 
   ServerName example.com
   ServerAlias www.example.com
   Redirect permanent / https://www.example.com
</VirtualHost>

# Redirect https://example.com to https://www.example.com

<VirtualHost *:443> 
  ServerName example.com 
  Redirect permanent / https://www.example.com
  SSLEngine On #etc... 
</VirtualHost>

# Serve https://www.example.com

<VirtualHost *:443> 
  ServerName www.example.com 
  DocumentRoot /usr/www/htdocs 
  SSLEngine On #etc... 
</VirtualHost>

Подробнее о виртуальных хостах на основе имени можно прочитать здесь.здесь.

Связанный контент