Apache http 到 https 使用 Squid 反向代理重定向

Apache http 到 https 使用 Squid 反向代理重定向

我有一個運行網站 example.com 的網頁伺服器。我已經在 apache 上配置了 http 到 https 重定向;見下文

<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 反向代理。當嘗試連線到 http://example.com 時,會建立 http 連線。不是https,重定向不成功。

如果我們輸入網址為http://example.com/index.html,連線成功重定向到 https。

有誰知道我們如何解決這個問題?

答案1

嘗試連接到 時http://example.com,建立的是 HTTP 連接,而不是 HTTPS,且重定向不成功。

http://example.com您似乎遇到的一個問題是您的 Apache 虛擬主機配置中沒有條目。從技術上講,該www前綴是 的子域example.com,因此被視為單獨的解析網站。排除 Squid 的任何問題,一個簡單的修復方法是修改虛擬主機以適應example.comServerAlias指令的不同變體:

# 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.comhttps://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>

您可以閱讀有關基於名稱的虛擬主機的更多信息這裡

相關內容