nginx:排除子資料夾進行 SSL 加密

nginx:排除子資料夾進行 SSL 加密

我已經將我的伺服器設定為 nginx 伺服器,如下所示:

server {
   listen 443;
   ssl on;
   ssl_certificate /etc/ssl/certs/example.com.crt;
   ssl_certificate_key     /etc/ssl/private/example.com.key;
   server_name example.com;
   ... other things down here..
}

如何從 SSL 中排除目錄?例如,在 /static/tour 下,我有一個解釋 Web 應用程式的導覽,無需對其進行加密。

作業系統:Ubuntu 10.04

答案1

我認為您要么想要設置另一個伺服器配置來偵聽端口 80,定向到同一文檔根(並確保應用程式根據所訪問的 URL 強制使用 SSL 或非 SSL,以便用戶可以'不要只是從HTTPS 中刪除“ S”),或使用以下內容:http://ariejan.net/2011/10/22/automatically-switch- Between-ssl-and-non-ssl-with-nginx-unicorn-rails

答案2

這是不可能的。 SSL 請求是加密的,這意味著伺服器在解密請求之前甚至無法得知 URI 的樣子。無法告訴客戶端應該使用非 SSL 協定發送對某個子目錄的請求。

正如 Demelziraptor 所說,您可以設定兩個虛擬主機,一個在連接埠 443 上使用 SSL,另一個在連接埠 80 上不使用 SSL。

您可以輕鬆設定重寫規則,以便/static/tourSSL 虛擬主機上的任何請求都會導致重定向到非 SSL 虛擬主機上的相同頁面,反之亦然,在非 SSL 虛擬主機上重定向回 SSL 虛擬主機。

相關內容