出現問題
這幾天我網站已經部署到vps上,域名也備好案,想使用域名指向我們公網ip。指完發現用域名訪問不了網站,但是公網ip可以。於是看了網上資料,好像是要清除瀏覽器DNS緩存,我清完沒用。然后發現我的域名是https的,查了查,好像是沒有在服務器上安裝SSL證書,導致我用域名訪問不了。最后真是這個原因
解決
- 去騰訊雲申請一個免費的一年SSL證書,但是每隔一年都得重新免費申請。點擊這里跳轉到騰訊雲SSL證書
- 之后的照着填就是了。。然后應該會等待一兩天(他們是打電話給我)就申請好。
- 申請好之后就這樣,點擊下載。
- 下載完解壓,出現下面的文件
- 選擇一個你在服務器上用的,我的是Nginx。
- 下面需要使用工具Putty連接服務器和WinSCP遠程傳輸文件來解決。其實單獨用WinSCP來解決也可以。
- 如何用Putty連接請看入門連接Putty
- WinSCP下載點擊這里
- 先使用WinSCP把剛剛解壓的Nginx文件中的兩個1_flunggg.cn_bundle.crt和2_flunggg.cn.key文件傳輸到你在服務器的nginx的conf目錄下。我自己是安裝在/etc/nginx下(在CentOS7安裝Nginx),但是沒有conf目錄,所以我自己新創建conf目錄,如下指令。把兩個文件從本地用WinSCP拉過去。然后在此目錄新創建一個文件
mkdir /etc/nginx/conf
vi myblog.conf
- 在 myblog.conf中加上(由於版本問題,配置文件可能存在不同的寫法。例如:使用 listen 443 ssl 代替 listen 443 和 ssl on。),記得把下面的ssl_certificate和ssl_certificate_key改成剛剛拉進來的兩個文件名(因為原先默認會自動定位到/etc/nginx/, 所以nginx -t時錯誤找不到兩個文件,所以的配置 /conf/xxx,這個看個人nginx版本情況),還有server_name。此外可以跟原先站點配置的文件.conf一起共存,那個80端口,這是新創建的443端口,配置SSL的,但是兩者共存時,80端口的站點需要強制跳轉為htpps的站點(443端口的),待會會講。
server {
#SSL 訪問端口號為 443
listen 443 ssl;
#填寫綁定證書的域名
server_name www.flunggg.cn flunggg.cn;
#證書文件名稱
ssl_certificate conf/1_flunggg.cn_bundle.crt;
#私鑰文件名稱
ssl_certificate_key conf/2_flunggg.cn.key;
ssl_session_timeout 5m;
#請按照以下協議配置
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#請按照以下套件配置,配置加密套件,寫法遵循 openssl 標准。
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
location / {
#網站主頁路徑。此路徑僅供參考,具體請您按照實際目錄操作。
root /usr/share/nginx/html;
index index.html index.htm;
}
}
- 然后在主配置中(nginx.conf)的http下添加如下代碼,然后測試一下,成功了就使用重啟nginx
# 使得剛剛配置的SSL生效
include /etc/nginx/conf/*.conf;
#測試
nginx -t
# 重啟
nginx -s reload
- 這時再訪問域名就可以訪問了。上面只是我的配置,你也可以把SSL配置跟你站點的配置放在一個文件。
如果80端口和443端口兩個配置文件同時生效的問題
有可能在訪問80端口,也就是http時有時會有點錯誤,所以在80端口的配置文件的server中,加上一句:當訪問把http轉為https
return 301 https://$server_name$request_uri;
配完還是有可能出現的問題
- 也就是將配置文件的root指向我們的站點目錄后。我們嘗試用域名訪問,發現出現下面問題。
- 這是權限文件,無權訪問你的站點。我檢查了我的站點目錄權限,都是git:git,正常。,最后發現是在nginx目錄下的全局配置文件nginx.conf中。
- user配的是nginx,導致沒有權限,修改成root。
- 在重啟 nginx(nginx -s reload)就可以訪問了。
解決得了記得點個贊哦