2
我沒有主域名的證書,所以我對我的幾個開發域使用自簽證書。如何在默認nginx服務器中完全禁用/重寫HTTPS?
我用這樣的:(前https://anyhost.somehost.com/
)
server {
listen 443;
server_name secure.somehost.com;
ssl on;
ssl_certificate /etc/nginx/ssl/secure.crt;
ssl_certificate_key /etc/nginx/ssl/secure.key;
}
server {
listen 80;
server_name secure.somehost.com;
rewrite ^https://$server_name$request_uri? permanent;
}
現在我所有的HTTPS請求在某種程度上改寫爲https://secure.somehost.com
。所以我想要禁用這種行爲並關閉默認服務器的HTTPS,理想情況下將重寫發送到簡單的HTTP(或者只發送500錯誤)。
我試過這段代碼。但由於我沒有證書,我想我無法發送適當的迴應。
server {
listen 443 default;
rewrite ^(.*) http://$host$1 permanent;
}
我必須使用default
服務器,因爲我也處理很多子域和外部域。
事情是我不能使用主域的自簽名證書,因爲我不希望用戶看到瀏覽器警告消息。我也處理很多域名,所以我真的不能爲所有域名生成證書。我只想要https關閉。 – Bobelev 2015-04-04 16:58:59
您可以省略443的服務器塊.Nginx僅監聽您在配置中定義的端口。如果您沒有443的服務器塊,nginx將不會使用該端口。但是,如果你的用戶轉到「https:」//...你的域名,他們將無法獲得任何東西(瀏覽器可能會說他們找不到該域名)。如果您需要將443重定向到80,則至少需要一個ssl證書(來自CA,而不是自簽名),因此您可以在不發出警告的情況下重定向請求。 – kchan 2015-04-04 17:14:50
如果我需要一個服務器塊443的特定子域,我該怎麼辦?也許有任何解決方案? – Bobelev 2015-04-04 18:55:33