Apache-2.4

Apache SSL“包羅萬象”進行維護

  • April 8, 2019

我們將不得不暫時關閉我們的伺服器,因為它們需要物理移動並安裝到更好的 UPS 上。

我不想讓我們的使用者出現“無法連接”錯誤,而且我還有另一個較小的伺服器框,我認為它可以顯示“維護模式”消息。

向他們保證這是定期維護 - 這樣他們就不會因為我們消失或任何事情而驚慌 - 給他們一個時間讓他們恢復一切,對給您帶來的不便表示歉意。之類的東西。

對於 HTTP,這很容易設置。我創建了“維護模式”HTML 頁面,然後讓預設虛擬主機(即包羅萬象)在向伺服器發出任何請求時顯示此頁面。

因此,任何指向我們伺服器上任何虛擬主機的 HTTP 連結都將與此匹配並顯示臨時“服務不可用”消息。

但是 HTTPS 讓我有點難過,因為主機名必須與 SSL 證書匹配,以避免瀏覽器拋出安全警告。

我想要的是一個預設的 SSL “catch all”,它將匹配任何主機名——因為沒有虛擬主機實際上在這個臨時伺服器上——然後重定向到 HTTP 維護消息。

我試了一下:

<VirtualHost *:443>
  ServerName catch-all
  ServerAlias *
  RedirectMatch ^(.*)$ http://%{SERVER_NAME}/
</VirtualHost>

但我在 Chrome (ERR_SSL_PROTOCOL_ERROR) 中收到“該站點無法提供安全連接”,並且 curl 抱怨“ssl 版本錯誤”。

我需要它,這樣如果有人通過 HTTPS 連結訪問我們伺服器上的某些內容,它就會全部重定向到 HTTP“維護”頁面。

伺服器可以像這樣“取消” SSL 握手並重定向到 HTTP 嗎?

使用服務的現有證書設置基於名稱的虛擬主機,文件根目錄包含中斷消息。TLS 伺服器名稱指示支持允許您為每個虛擬主機提供不同的 SSL 配置指令,包括不同的證書。


如果此類中斷對您的組織來說是個問題,請考慮從您的設計中刪除單點故障。不同機架中的 Web 伺服器,在集群負載平衡器後面,在不同的電路上都有雙電源,遠端託管中斷消息。這可能會變得昂貴,因此請選擇適合您的服務可用性目標的冗餘。

引用自:https://serverfault.com/questions/962011