Nginx

如何告訴 nginx 只為一個域提供 SSL?

  • December 11, 2017

是的,這與此問題有些重複,但是,根據 ngnx 文件“配置 HTTPS 伺服器”(“單個 HTTPS 伺服器”部分),此限制不再存在,並且該問題的答案不再有效.

從上面的連結:

如上所示,在 0.7.14 之前,無法為單個偵聽套接字選擇性地啟用 SSL。只能使用 ssl 指令為整個伺服器啟用 SSL,因此無法設置單個 HTTP/HTTPS 伺服器。添加了listen指令的ssl參數來解決這個問題。因此,不鼓勵在現代版本中使用 ssl 指令。

但是,按照該文件中的規定設置伺服器塊:

server {
       listen *:80;
       listen 443 ssl;

       server_name  example.com *.example.com;
[...]

… nginx 仍然會example.com在發出請求時提供內容https://example.net

我知道 SSL 在 HTTP 請求之前提供,但必須有某種方法來防止伺服器響應沒有與之關聯的有效 SSL 證書的 SSL 請求。

非常感謝您對此的任何見解。

必須有某種方法來阻止伺服器響應沒有與之關聯的有效 SSL 的 SSL 請求

嗯,有點。由於您有多個站點在同一個 IP 上執行,因此嘗試為任何站點建立與該 IP 的 SSL 連接的使用者將始終建立其 SSL 連接(如果他們指向的主機名不是證書涵蓋)。

為了防止這種情況,您所能做的就是不讓 SSL 監聽該 IP(在不同的地址上執行您的 SSL 內容)。

如果您對他們獲得帶有潛在錯誤的 SSL 連接感到滿意,那麼您可以在之後選擇;而不是從啟用 SSL 獲取內容server,您可以讓他們預設獲得 403 錯誤或重定向到他們發送請求的主機名的 http 偵聽器 - 這些選項之一對您的系統有意義嗎?

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