Linux下 nginx配置ssl證書實(shí)現(xiàn)https訪問

現(xiàn)在很多網(wǎng)站都會使用SSL證書對網(wǎng)站數(shù)據(jù)進(jìn)行傳輸加密,尤其是銀行、金融、電商類的網(wǎng)站。但很多人對于https的理解都存在不少誤區(qū),比如https會讓網(wǎng)站訪問速度變慢、消耗服務(wù)器資源、增加網(wǎng)站成本等等。之所以會實(shí)現(xiàn)https加密保護(hù),主要是因?yàn)樵摼W(wǎng)站使用了SSL證書。

配置ssl證書之前,先準(zhǔn)備SSL證書,獲取途徑有很多。有免費(fèi)的,也有付費(fèi)的。本人直接在阿里云申請的免費(fèi)證書,審核時間很快,1小時內(nèi)通過。

下面為詳細(xì)步驟:

登錄阿里云,找到SLL證書:

打開頁面后選擇購買證書

選擇免費(fèi)型

購買成功后? ? 進(jìn)入控制臺,可以看到剛才購買的證書列表,然后選擇申請

?免費(fèi)的證書只能綁定一個域名,所以在申請的時候填好自己的域名就行了。

等審核通過后,選擇下載,根據(jù)自己的實(shí)際情況選擇相應(yīng)的類型,本人的是nginx,所以就下載了nginx類型的證書

準(zhǔn)備好證書后,找到nginx的安裝目錄,我的安裝位置為:/usr/local/nginx?

進(jìn)入 config/nginx.conf?

命令:vim nginx.conf

開始配置文件的修改?

在修改配置文件之前,最好做一個備份,防止修改錯誤,也能及時回退錯誤

找到第一個監(jiān)聽80端口的server:以下是我修改好的server

? ? server {

? ? ? ? listen? ? ? ?80;

? ? ? ? server_name? 需要訪問的域名;

? ? ? ? rewrite ^(.*) https://$server_name$1 permanent; #這句是代表 把http的域名請求轉(zhuǎn)成https

? ? ? ? #charset koi8-r;

? ? ? ? #access_log? logs/host.access.log? main;

? ? ? ? location / {

? ? ? ? ? ? root? ?html;

? ? ? ? ? ? index? index.html index.htm;

? ? ? ? ? ? proxy_pass? ?http://需要訪問的域名; #因?yàn)檫@里還是80端口,所以保持http就可以了

? ? ? ? }

? ? }

在實(shí)際的配置文件中,最好把我上面的備注刪除

第一個server修改好了之后。那么就需要開始配置第二個server。拉到文件的底部。看到有一個https類型的server。而且已經(jīng)全部被注釋封上了,這是我們需要改的第二個server,如圖:?

這里除了HTTPS server這行之外,其他的 # 刪除,啟動https模塊

? ? # HTTPS server

? ? #

? ? server {

? ? ? ? listen? ? ? ?443 ssl;

? ? ? ? server_name? 需要訪問的域名,這里也不用加https;

? ? ? ? ssl on;

? ? ? ? ssl_certificate? ? ? /usr/local/ssl/app/app.pem;? #這里是ssl key文件存放的絕對路徑,根據(jù)自己的文件名稱和路徑來寫

? ? ? ? ssl_certificate_key? /usr/local/ssl/app/app.key;? #這里是ssl key文件存放的絕對路徑,根據(jù)自己的文件名稱和路徑來寫

? ? ? ? ssl_session_cache? ? shared:SSL:1m;

? ? ? ? ssl_session_timeout? 5m;

? ? ? ? ssl_ciphers? HIGH:!aNULL:!MD5;

? ? ? ? ssl_prefer_server_ciphers? on;

? ? ? ? location / {

? ? ? ? ? ? proxy_pass? ?http://需要訪問的域名;

? ? ? ? }

? ? }

配置好后,nginx的配置就算是完成了。不過這只是配置ssl證書的第一步!

接下來就是要讓配置文件生效:

進(jìn)去nginx的sbin文件夾,我的sbin文件夾在:/usr/local/nginx/sbin

執(zhí)行以下語句:檢驗(yàn)配置文件是否有錯誤

./nginx -t

如果nginx曾經(jīng)安裝過SSL模塊,那么應(yīng)該會顯示以下界面:(如果已經(jīng)顯示配置成功,那么可以跳過這一步,直接重啟nginx就可以了)?


可是大多數(shù)第一次安裝https證書,都會報錯,說缺少SSL模塊,如下:

這時候我們就可以先安裝SSL模塊:?

先確認(rèn)2個位置:?

1)我的nginx是安裝在了/usr/local/nginx/下?

2)我的nginx的源碼包放在了/usr/local/nginx/nginx/nginx-1.8.0下。如果沒有的話,重新下載你對應(yīng)的nginx版本的源碼包,找個目錄解壓

目錄切換到我們的源碼包安裝位置:

cd /usr/local/nginx/nginx/nginx-1.8.0

執(zhí)行語句,重新安裝ssl模塊:

./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

了。配置成功后,那么就需要編譯我們的配置。(注意這里只能用make 而不要用make install,因?yàn)閳?zhí)行make install是覆蓋安裝的意思)?

運(yùn)行:

make

等待執(zhí)行完成后,我們需要把新編譯的nginx模塊替換原來的nginx。

還是老規(guī)矩,先備份舊的nginx,執(zhí)行語句(這里面復(fù)制的文件的路徑需要根據(jù)你們安裝的目錄自行修改,如果和我安裝的路徑是一樣的那么可以直接運(yùn)行該語句):

cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

關(guān)閉nginx(因?yàn)橐研碌哪K覆蓋舊的nginx)

先找到nginx端口號,如圖,目前我nginx的進(jìn)程號為:13542

ps -ef|grep nginx


殺死該進(jìn)程就可以了,執(zhí)行語句:

kill -QUIT 13542

關(guān)閉nginx進(jìn)程后就可以開始替換了(注意:我當(dāng)前的位置是在我nginx的源碼包中,目錄不要搞錯了)?


執(zhí)行:(復(fù)制到我的nginx的目錄中)

cp ./objs/nginx /usr/local/nginx/sbin/

然后就是啟動nginx。在啟動之前,也可以在測試一次配置文件是否已經(jīng)生效:

#先切換到sbin目錄

cd /usr/local/nginx/sbin/

#檢測nginx的配置文件是否有錯誤

./niginx -t

看到這樣的,就是已經(jīng)成功了?

最后啟動nginx:

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

因?yàn)閯偛盘鎿Qnginx模塊的時候是把nginx進(jìn)程都?xì)⑺懒?,所以要用上面的命令進(jìn)行啟動,而不能使用reload重啟。

nginx正常啟動后,我們在訪問我們的網(wǎng)站,發(fā)現(xiàn)https就已經(jīng)配置好了

有什么不明白的可以留言,我看到后會一一回復(fù)。感謝大家支持!


我的公眾號,歡迎大家關(guān)注哦!


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容