由于微信小程序的缘故,需要SSL服务。
文章用详解用了两个免费SSL证书反向代理到一个主机端口上。
第一步: 检查Nginx是否支持SNI,方式如下
命令:nginx -V
若返回结果中有显示“TLS SNI support enabled”,则表示支持。(如下)
[root@aerchi ~]# nginx -v
nginx version: nginx/1.15.5
[root@aerchi ~]# nginx -V
nginx version: nginx/1.15.5
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_gzip_static_module --with-http_ssl_module --with-http_flv_module --with-http_random_index_module --with-http_degradation_module --with-http_secure_link_module --with-http_realip_module --with-pcre
第二步: 创建新虚拟主机,并配置上二个SSL证书。
如下,把两个SSL域名都指向同一个主机或反向代理端口,
(注:免费SSL证书可通过阿里云或腾讯云申请,本人的证书是阿里云申请)
nginx 安装路径: /usr/local/nginx
nginx 配置文件路径: /usr/local/nginx/conf/nginx.conf
通过下列命令: vim /usr/local/nginx/conf/nginx.conf, 在里面加入
(注:本人是用反向代理到node js 服务)
# HTTPS server 1
# author: aerchi
server {
listen 443 ssl;
server_name api.daza.ren;
#ssl on;
#cert.pem
ssl_certificate "/usr/data/cert-ssl/api.daza.ren_nginx.pem";
#cert.key
ssl_certificate_key "/usr/data/cert-ssl/api.daza.ren_nginx.key";
access_log /var/log/nginx/api.ssl.log;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:3389;
#root html;
#index index.html index.htm index.php;
}
}
# HTTPS server 2
# author: aerchi
server {
listen 443 ssl;
server_name wxapi.daza.ren;
#ssl on;
#cert.pem
ssl_certificate "/usr/data/cert-ssl/wxapi.daza.ren_nginx.pem";
#cert.key
ssl_certificate_key "/usr/data/cert-ssl/wxapi.daza.ren_nginx.key";
access_log /var/log/nginx/wxapi.ssl.log;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:3389;
#root html;
#index index.html index.htm index.php;
}
}
如上:请确保 xxx.pem 和 xxx.key 放在 /usr/data/cert-ssl/ 路径下。
如需绑定多个,请参考以上格式,自行设置。