Nginx

NGINX 是否支持 SNI?

  • May 22, 2016

編輯新問題:NGINX 可以檢查 TLS 請求以查找像 HAProxy(等)那樣的 SNI 嗎?

根據我所閱讀的內容(並且有人告訴我),NGINX 不應該支持 SNI,我應該選擇 HAProxy 以獲得 SSL 透明的反向代理。美好的。然而,似乎表明 NGINX 實際上支持 SNI,但我找不到任何有用的文件。也就是說,我能找到的所有內容都暗示我仍然必須向 NGINX 提供證書,以便它能夠匹配請求的主機名。但這不正是 SNI 試圖解決的問題嗎?

現在,我開始在同一個 IP 地址上執行大量不同的 HTTPS 站點,這在跨許多不同配置維護同一條資訊時會造成損失,所以我想知道我是否會更好放棄 NGINX 並學習另一個軟體(又名 HAProxy),或者我是否真的可以堅持使用 NGINX——以及如何。

理想情況下,我希望代理為加密流量提供一種透明隧道,並且只有客戶端和後端伺服器(例如,Apache 或我正在執行的任何其他應用程序)應該能夠解密它– 這意味著我不必將證書資訊保留在反向代理的配置中。意思是我可以從這裡走

server {
   listen 443 default ssl;

   server_name example.org;
   add_header X-Clacks-Overhead "GNU Terry Pratchett";

   ssl on;
   ssl_certificate         /etc/le_certs/example.org/live/example.org/fullchain.pem;
   ssl_certificate_key     /etc/le_certs/example.org/live/example.org/privkey.pem;

   location / {
       proxy_pass_header   Server;
       proxy_set_header    Host $host;
       proxy_set_header    X-Real-IP $remote_addr;
       proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header    X-Forwarded-Proto $scheme;
       proxy_pass          https://exampleapp;
   }
}

到這裡

server {
   listen 443 default ssl;

   server_name example.org;
   add_header X-Clacks-Overhead "GNU Terry Pratchett";

   location / {
       proxy_pass_header   Server;
       proxy_set_header    Host $host;
       proxy_set_header    X-Real-IP $remote_addr;
       proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_set_header    X-Forwarded-Proto $scheme;
       proxy_pass          https://exampleapp;
   }
}

額外的好處是代理的容器根本不必訪問證書(看到這是一個 Docker 設置,安裝了大量的捲,這導致更多的維護)。

您誤解了 SNI 支持的“缺乏”。

首先,nginx通常適用於“萬用字元”SSL 設置。支持問題出現在無法處理 SNI 的舊客戶端(即瀏覽器)中

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