本文主要記錄Nginx怎么配置SSL證書,前提是Nginx安裝成功和SSL證書已經獲取。
在我們下載的證書文件中有一個Nginx的文件夾,這里面的兩個文件都是需要的。我們需要把這個兩個文件上傳到 linux 服務器中,推薦放到/etc/ssl/
目錄下
然后我們需要去找到nginx的配置文件。
ps -ef | grep nginx
可以看到 nginx的目錄是 /usr/local/nginx
那么我們需要找到 nginx.conf文件並修改
cd /usr/local/nginx/conf
vim nginx.conf
我們需要在 http 中去添加一個server節點,如下所示。如果你不習慣在linux中修改,把nginx.conf這個下載到本地修改完成再上傳也是一樣的。
如果用戶使用的是http協議進行訪問,那么默認打開的端口是80端口,所以我們需要做一個重定向,我們在上一個代碼塊的基礎上增加一個server節點提供重定向服務。
http{ #http節點中可以添加多個server節點 server{ #監聽443端口 listen 443; #對應的域名,把baofeidyz.com改成你們自己的域名就可以了 server_name baofeidyz.com; ssl on; #從騰訊雲獲取到的第一個文件的全路徑 ssl_certificate /etc/ssl/1_baofeidyz.com_bundle.crt; #從騰訊雲獲取到的第二個文件的全路徑 ssl_certificate_key /etc/ssl/2_baofeidyz.com.key; ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; #這是我的主頁訪問地址,因為使用的是靜態的html網頁,所以直接使用location就可以完成了。 location / { #文件夾 root /usr/local/service/ROOT; #主頁文件 index index.html; } } server{ listen 80; server_name baofeidyz.com; rewrite ^/(.*)$ https://baofeidyz.com:443/$1 permanent; } }
萬事俱備,只欠重啟。
/usr/local/nginx/sbin/nginx
結果一重啟,duang~出錯了。
nginx:[emerg]unknown directive ssl,就是這個錯誤提示
因為我們配置這個SSL證書需要引用到nginx的中SSL這模塊,然而我們一開始編譯的Nginx的時候並沒有把SSL模塊一起編譯進去,所以導致這個錯誤的出現。
1:我們先來到當初下載nginx的包壓縮的解壓目錄,如果你是看小編寫的教程安裝的,解壓目錄應該在“/data/”目錄下。
2:來到解壓目錄下后,按順序執行一下命令:
cd /data/nginx-1.10.1 //這個命令是進入下載解壓的 nginx 文件夾,看你的實際路徑
./configure --with-http_ssl_module
重新添加這個ssl模塊
注: 執行以上一條命令出現這個錯誤(./configure:錯誤:SSL模塊需要OpenSSL庫。),原因是因為缺少了OpenSSL,那我們再來安裝一個即可執行:yum -y install openssl openssl-devel 等待OpenSSL的安裝完成后,再執行./configure
3:執行make命令,但是不要執行make install,因為make是用來編譯的,而make install是安裝,不然你整個nginx會重新覆蓋的。
make
4:在我們執行完做命令后,我們可以查看到在nginx解壓目錄下,objs文件夾中多了一個nginx的文件,這個就是新版本的程序了。首先我們把之前的nginx先備份一下,然后把新的程序復制過去覆蓋之前的即可。
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak //備份,備份則不用執行
cp objs/nginx /usr/local/nginx/sbin/nginx
出現錯誤,刪除掉/usr/local/nginx/sbin/下的 nginx 再復制過去即可
5:最后我們來到Nginx安裝目錄下,來查看是否有安裝ssl模塊成功。執行
cd /usr/local/nginx/
./sbin/nginx -v
即可看到如下圖:
最后如果出現如上圖,則SSL模塊添加到Nginx的編譯好了,這次重新啟動則OK了。