2017-06-21 66 views
0

我剛安裝了一個新的控制面板(Vesta),它通過Let'sEncrypt自動支持SSL。現在,我所有的域都有SSL證書,但所有域仍以http://打開(當使用 .com時),而不是https://。如何使用通用命令強制所有網站/單個域使用HTTPS?

現在,我希望所有域默認開始使用https://。我怎麼做?

我沒有很多域(〜15),所以我不介意每域的方法,但如果可能的話,服務器範圍內的單個腳本會更好。如果按域進行,我確實需要一個通用腳本(例如$ domain,而不是字面上的example.com)。

爲了記錄,我有一個運行Nginx + php-fpm的Ubuntu 16.04 VPS,沒有Apache。

P.s.我通過谷歌看到了一些關於這個主題的帖子,這些帖子並沒有幫助我,所有帖子都是在沒有收到投票的情況下發布的。因此我已經把它放在了這裏。

真的認爲這是奇怪的是這麼辛苦SSL在這個時代轉向默認情況下,它應該幾乎是食品,飲料和你的頭頂上方的屋頂作爲標準..

回答

-1

你可以創建一個監聽HTTP 301重定向到HTTPS域的端口80的服務器塊。

server { 
    listen  80; 
    server_name yourdomain.com; 
    return  301 https://yourdomain.com$request_uri; 
} 

你也可以擁有一個服務器塊超過兩個80和443監聽,但使用HTTP嚴格傳輸安全(HSTS)就喜歡443

add_header Strict-Transport-Security "max-age=63072000; includeSubdomains"; 

啓用此標題,請求端口80將301重定向到443.瀏覽器會記住你的域名優先使用HTTPS,並且在請求80個流量之前,後續請求將重定向到443。在Chrome中,這顯示爲網絡標籤上的307內部重定向。

重要提示:請注意,這不同於預加載 HSTS在互聯網上更持久一些。

add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"; 

我希望有幫助。

乾杯, 伊恩

+0

只是爲了記錄在案,我必須把這些代碼件nginx.conf文件中的HTTP {}標籤內,位於/ etc/nginx的,對不對?或者我錯了?這不包括WWW到非WWW重定向,對吧?更新:試過了,並沒有改變一個東西.. –

+0

輕微更新,而不是直接把它放在nginx.conf文件中,該文件本身包含了所有放在conf.d文件夾中的東西,所以我創建了一個名爲' https.conf」。我把你的線放在那個文件夾中,但沒有任何工作。 –

+0

我們的設置必須不同。我不使用conf.d文件夾。我只是使用從源代碼編譯後提供的nginx.conf。對不起,它並沒有解決你的問題。不知道爲什麼拒絕投票。並非所有的迴應都能解決問題。反對票不鼓勵人們試圖幫助。乾杯。 – iangetz