Nginx使用SSL模块配置https

时间:2023-03-09 07:48:10
Nginx使用SSL模块配置https

背景

开发微信小程序,需要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

Nginx使用SSL模块配置https

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模块的配置