背景
開發微信小程式,需要https域名,因此使用Nginx的SSL模組配置https
步驟
一、去域名管理商(如騰訊雲、阿里雲等)申請CA證書
二、在Nginx中配置,一般情況下域名管理商會提供配置文件
1、把證書和金鑰上傳到伺服器中(所在位置和nginx.conf配置中一致,這裡我直接放在nginx.conf同一目錄下)
2、配置nginx.conf,如下所示:
server {
#https預設地址埠443
listen 443 ssl;
#域名
server_name xx.xxx.com;
#證書名
ssl_certificate xxxxxx.crt;
#金鑰
ssl_certificate_key xxxxxx.key;
#session快取
ssl_session_cache shared:SSL:1m;
#session有效期
ssl_session_timeout 30m;
#加密協議
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#加密演算法
ssl_ciphers HIGH:!aNULL:!MD5;
#伺服器端選擇演算法
ssl_prefer_server_ciphers on;
#此處根據自己的系統配置
location / {
root html; index index.html index.htm;
}
}
三、過載nginx(nginx -s reload),然後訪問配置的域名驗證https的配置。
錯誤
本人nginx安裝目錄為:/usr/local/nginx
配置後,過載nginx報如下錯誤:
nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/nginx.conf:371
此錯誤是因為nginx未安裝SSL模組,需要安裝配置SSL模組
通過/usr/local/nginx下的configure 配置SSL模組和其他模組資訊,此處需要特別注意,這個方式不是增量新增模組的,會覆蓋原來的配置的,所以需要把原來的配置也加在一起
1、通過nginx -V檢視現在配置,然後關閉nginx(nginx -s stop)
2、執行./configure --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/nginx.conf --with-http_ssl_module,其中--with-http_ssl_module為SSL模組的配置
3、執行make命令編譯
4、執行完成後會在/usr/local/nginx/objs目錄下生成nginx命令
5、備份/usr/local/nginx/sbin目錄下的nginx命名,然後複製objs目錄下的nginx到sbin目錄下(cp objs/nginx sbin/ ,如果不能複製,可以使用cp -rpf objs/nginx sbin/ 強制複製 )
6、啟動nginx完成SSL模組的配置