一、引言
當我們的Linux服務器上當中發布了web項目,有時候需要配置一個SSL證書,這樣表示你這個網站還比較正式哈哈哈。當我把證書下載好,把nginx.conf配置好,簡直就是萬事俱備,只欠重啟。結果一重啟,duang~出錯了。
nginx:[emerg]unknown directive ssl,就是這個錯誤提示
因為我們配置這個SSL證書需要引用到nginx的中SSL這模塊,然而我們一開始編譯的Nginx的時候并沒有把SSL模塊一起編譯進去,所以導致這個錯誤的出現。
二、錯誤解決步驟
既然在安裝的時候沒有編譯ssl,難道把nginx卸載重新安裝一次?不不不,我們只需要在原有的基礎上添加ssl模塊就行了。
步驟一:我們先來到當初下載nginx的包壓縮的解壓目錄,如果你是看小編寫的教程安裝的,解壓目錄應該在“/usr/loacl/src/”,絕大多數應該都是在這個目錄下的,已經是一種規范了。
步驟二:來到解壓目錄下后,按順序執行一下命令:
命令1、./configure --with-http_ssl_module //重新添加這個ssl模塊
注意如果沒有出現錯誤,則直接看命令2即可
執行以上一條命令出現這個錯誤(./configure:錯誤:SSL模塊需要OpenSSL庫。),原因是因為缺少了OpenSSL,那我們再來安裝一個即可執行:yum -y install openssl openssl-devel
等待OpenSSL的安裝完成后,再執行./configure ,最后在執行” 命令1" 即可。
命令2、執行make命令,但是不要執行make install,因為make是用來編譯的,而make install是安裝,不然你整個nginx會重新覆蓋的。
命令3、在我們執行完做命令后,我們可以查看到在nginx解壓目錄下,objs文件夾中多了一個nginx的文件,這個就是新版本的程序了。首先我們把之前的nginx先備份一下,然后把新的程序復制過去覆蓋之前的即可。
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
cp objs/nginx /usr/local/nginx/sbin/nginx
命令4,最后我們來到Nginx安裝目錄下,來查看是否有安裝ssl模塊成功。執行./sbin/nginx -V即可看到如下圖:

三、最后如果出現如上圖,則SSL模塊添加到Nginx的編譯好了,這次重新啟動則OK了。

如果重新啟動nginx報如下錯誤:
nginx 報錯 : [warn] the "ssl" directive is deprecated, use the "listen ... ssl" directive instead
將 ssl on改為listen 443 ssl。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。