《程式設計師修煉之道:從小工到專家》第五章讀書筆記
一、Nginx新增SSL模組
1. 檢查是否存在ssl模組
進入到你的nginx安裝目錄下面,進入到目錄的sbin目錄下,我的是/home/nginx/sbin輸入
#注意是大寫的V
./nginx -V
#也可以不用切到sbin目錄下,直接執行
/home/nginx/sbin/nginx -V
如果出現 (configure arguments: --with-http_ssl_module), 則已安裝。
2. 安裝SSL模組
接下來進入到你的解壓縮後的nginx目錄,注意這裡不是nginx安裝目錄,是解壓縮後的目錄,我的是/home/nginx/backup/nginx-1.19.10/輸入
./configure --prefix=/home/nginx --with-http_stub_status_module --with-http_ssl_module
接下來執行
make
#切記不要執行make install,否則會重新安裝nginx
3. 安裝成功後
上述操作執行完成以後,我的/home/nginx/backup/nginx-1.19.10/目錄下會出現objs資料夾,資料夾記憶體在nginx檔案,如圖:
接下來使用新的nginx檔案替換掉之前安裝目錄sbin下的nginx,注意這裡的替換的時候可以先將之前的檔案備份下,停掉nginx服務
./nginx -s stop #停止nginx服務
#替換之前的nginx
cp /home/nginx/backup/nginx-1.19.10/objs/nginx /home/nginx/sbin
替換完之後,重新啟動Nginx服務。重啟可以使用命令
./nginx -s reload
若使用該命令報錯:
[root-01011-centos sbin]# ./nginx -s reload
ngx_http_fastdfs_set pid=1393
nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)
解決:
./nginx -c /home/nginx/conf/nginx.conf
#指定目錄的配置檔案 nginx.conf
成功之後,再次進入到nginx安裝目錄下,檢視ssl是否成功
#注意這裡是大寫的V,小寫的只顯示版本號 ./nginx -V #可以看到這裡出現了configure arguments: --with-http_ssl_module 證明已經安裝成功
二、Nginx配置Https
1. 生成SSL證書:
方式一:可以自己生成一個,會產生server.crt server.csr server.key三個檔案,但是自己生成的頒發機構不被瀏覽器信任,可以用,但是微信小程式訪問就不能用。生成方式參考:自定義生成SSL證書
方式二:去阿里雲上申請一個免費證書,申請方式參考:阿里雲申請證書,申請之後下載Nginx證書
最終我們需要用到server.crt server.key檔案 阿里雲上下載的.crt檔案字尾名為.pem可以直接更改字尾名為.crt
2.Nginx配置https:
在nginx.conf檔案中新增配置,配置完成之後重啟:
- 其中server_name要和證書申請時填寫的域名保持一致。
- .crt檔案和.key檔案路徑要寫對.
server{
listen 443 ssl;
server_name ip 域名;
ssl_certificate /home/nginx/conf/cert/server.crt;
ssl_certificate_key /home/nginx/conf/cert/server.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location /wx-api/ {
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_pass http://wx-api/;
expires -1;
}
location / {
root /home/nginx/html;
index index.html index.htm;
}
}
3.驗證證書是否有效
以上SSL模組以及nginx.conf檔案配置好了以後,可以使用工具,測試是否成功,工具連結如下:[工具連結】(https://www.myssl.cn/tools/check-server-cert.html)
本文參考:
1.Nginx新增SSL模組:https://blog.csdn.net/weixin_46089066/article/details/110470409