怎么在nginx中使用ssl模塊配置HTTPS訪問?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
為德惠等地區(qū)用戶提供了全套網頁設計制作服務,及德惠網站建設行業(yè)解決方案。主營業(yè)務為網站設計制作、做網站、德惠網站設計,以傳統(tǒng)方式定制建設網站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!操作步驟:
一、下載CA證書
1. 登錄阿里云,選擇“控制臺”-“產品與服務”,在“安全(云盾)”一欄中選擇“CA證書服務(數據安全)”。
2.在已經購買好的證書點擊“下載”,在新打開的頁面上選擇“Nginx/Tengine”,點擊“下載證書for Nginx”。
二、在Nginx配置文件中安裝證書
文件說明:1. 證書文件“證書名稱.pem‘',包含兩段內容,請不要刪除任何一段內容。2. 如果是證書系統(tǒng)創(chuàng)建的CSR,還包含:證書私鑰文件“證書名稱.key”。( 1 ) 在Nginx的配置文件所在的目錄下創(chuàng)建cert文件夾,并且將下載的全部文件拷貝到cert目錄中。如果申請證書時是自己創(chuàng)建的CSR文件,請將對應的私鑰文件放到cert目錄下并且命名為“證書名稱.key”;
( 2 ) 打開 Nginx 安裝目錄下 conf 目錄中的 nginx.conf 文件,找到:
# HTTPS server # #server { # listen 443; # server_name localhost; # ssl on; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # ssl_session_timeout 5m; # ssl_protocols SSLv2 SSLv3 TLSv1; # ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; # ssl_prefer_server_ciphers on; # location / { # # #} #}
( 3 ) 將其修改為 (以下屬性中ssl開頭的屬性與證書配置有直接關系,其它屬性請結合自己的實際情況復制或調整) :
server { listen 443; server_name localhost; ssl on; root html; index index.html index.htm; ssl_certificate cert/證書名稱.pem; ssl_certificate_key cert/證書名稱.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location / { root html; index index.html index.htm; } }
保存退出。
( 4 )重啟 Nginx。
nginx -s reload
( 5 ) 通過 https 方式訪問您的站點,測試站點證書的安裝配置。 在瀏覽器中輸入https://dmsdbj.com,如下圖所示,則說明配置成功。
安裝過程中遇見的問題
錯誤一:
nginx: [emerg] unknown directive "ssl" in /usr/local/nginx/conf/nginx.conf:151
解決方案:
出現(xiàn)這種錯誤可能是兩種情況造成的:
情況一:配置文件格式不正確。
解決方法參考鏈接:https://www.jb51.net/article/141569.htm
情況二:ssl模塊并未被安裝
默認情況下ssl模塊并未被安裝,如果要使用該模塊則需要在編譯nginx時指定–with-http_ssl_module參數,這種情況也會導致錯誤二的出現(xiàn)。
解決方案:
nginx缺少http_ssl_module模塊,編譯安裝的時候帶上--with-http_ssl_module配置就行了,但是現(xiàn)在的情況是我的nginx已經安裝過了,怎么添加模塊,其實也很簡單,往下看: 做個說明:我的nginx的安裝目錄是/usr/local/nginx這個目錄,我的源碼包在/usr/local/src/nginx-1.3.6目錄
(1)切換到源碼包:
cd /root/nginx-1.13.6
(2)配置信息:
./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
(3)配置完成后,運行make進行編譯,千萬不要進行make install,否則就是覆蓋安裝。
mark
(4)然后備份原有已經安裝好的nginx
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
(5)停止Nginx,正常命令直接 nginx -s stop就可以
nginx -s stop
如果關不掉,就直接Kill掉進程。ps aux | grep 進程名 查看進程占用的PID號。
ps aux|grep nginx
殺掉查出來的PID就可以了,kill -9 PID 命令用于終止進程。必須先kill掉root對應的PID才能進行下面的三個nobody的PID。
kill -9 10922 kill -9 28276 kill -9 28277 kill -9 28278
(6)將剛剛編譯好的nginx覆蓋掉原有的nginx
cp ./objs/nginx /usr/local/nginx/sbin/
(7)啟動nginx
nginx
(8)通過下面的命令查看是否已經加入成功。
nginx -V
錯誤二:
nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:148
解決方案:
出現(xiàn)這種情況的解決方案參考錯誤一的第二種情況的解決方案即可。
錯誤三:
Stoping nginx... nginx: [emerg] BIO_new_file("/usr/local/nginx/conf/cert/214291778530222.pem") failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/usr/local/nginx/conf/cert/214291778530222.pem','r') error:2006D080:BIO routines:BIO_new_file:no such file) failed. Use force-quit
解決方案:
這可能是證書路徑存放的位置不正確導致的,而且只要寫絕對路徑,就會報錯,無論windows還是linux。
將證書文件放到nginx.conf所在的目錄下即可。
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注創(chuàng)新互聯(lián)成都網站設計公司行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)成都網站設計公司的支持。
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、網站設計器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。