nginx开启https配置

最近再作小程序项目上线官方强制要求使用https,这里记录一下nginx下https的部署使用;若是有钱的话能够购买证书这里使用的是免费的html

什么是https参考:https://jingyan.baidu.com/article/2d5afd69d4069685a2e28e3f.htmllinux

1.使用Let’s Encrypt免费证书

官网:https://letsencrypt.org/nginx

默认3个月,可是能够经过脚本的方式达到永久证书,快到期的时候从新申请新的便可 具体操做请参考git

https://www.168seo.cn/linux/24483.htmlgithub

https://github.com/Neilpang/acme.sh/wiki/说明web

2.使用腾讯云SSL证书

1.申请证书

在这里插入图片描述
因为CA机构和证书代理商策略调整,从2018年1月1日起,同一主域最多只能申请20张亚洲诚信品牌免费型DV版SSL证书(一级域名及其子域名均属于同一主域,例如 domain.comssl.domain.comssl.ssl.domain.com 都属于同一主域)。以前已颁发的证书在有效期内使用不受影响(注:即将到期的证书须要18年1月1日之后从新申请时,会受到上述策略的限制)。小程序

貌似同一主域只能免费申请20张证书,用完就要买了后端

我这边采用的是腾讯云全家桶系列 服务器、负载均衡、域名、证书 下边也是会围绕这些开始记录安全

首先得先将域名解析关联到服务器,这里就不记录 一键解析就行了服务器

2.安装证书到个人nginx服务器

官方安装文档: https://cloud.tencent.com/document/product/400/4143

2.1 查看申请后的证书并下载
在这里插入图片描述
2.2 点击下载按钮下载证书

里面会有藏用服务器的配置文件,我这里使用的是nginx
在这里插入图片描述

2.3 配置nginx

将Nginx文件夹下的证书文件和密钥复制到同一个目录下 如:/usr/local/nginx/conf 目录下

  • 1_www.domain.com_bundle.crt SSL 证书文件
    文件包括两段证书代码 “-----BEGIN CERTIFICATE-----” 和 “-----END CERTIFICATE-----”

  • 2_www.domain.com.key 私钥文件
    文件包括一段私钥代码 “-----BEGIN RSA PRIVATE KEY-----” 和 “-----END RSA PRIVATE KEY-----”

在这里插入图片描述

修改 Nginx 根目录下 conf/nginx.conf 文件,内容以下:

server {
        listen 443;
        server_name www.domain.com; #填写绑定证书的域名
        ssl on;
        ssl_certificate 1_www.domain.com_bundle.crt;
        ssl_certificate_key 2_www.domain.com.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #按照这个协议配置
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#按照这个套件配置
        ssl_prefer_server_ciphers on;
        location / {
            root   html; #站点目录
            index  index.html index.htm;
        }
    }

配置完成后,请先执行命令 bin/nginx –t 测试 Nginx 配置是否有误。若无报错,重启 Nginx 以后,便可使用 https://www.domain.com 来访问。

配置文件参数 说明
listen 443 SSL 访问端口号为 443
ssl on 启用 SSL 功能
ssl_certificate 证书文件
ssl_certificate_key 私钥文件
ssl_protocols 使用的协议
ssl_ciphers 配置加密套件,写法遵循 openssl 标准

对于用户不知道网站能够进行 HTTPS 访问的状况下,让服务器自动把 HTTP 的请求重定向到 HTTPS。
在服务器这边的话配置的话,能够在页面里加 js 脚本,也能够在后端程序里写重定向,固然也能够在 web 服务器来实现跳转。Nginx 是支持 rewrite 的(只要在编译的时候没有去掉 pcre)
在 HTTP 的 server 里增长 rewrite ^(.*) https://$host$1 permanent;
这样就能够实现 80 进来的请求,重定向为 HTTPS 了。

遇到的问题:

域名解析服务器配置一切正常可是https就是不生效或者证书无效

1.检查安全组443端口是否开发

2.当前证书申请域名是否和访问域名相同 子域名不可和主域名共用同一证书

负载均衡配置https

上面讲的是将证书安装到nginx中 下边记录的是腾讯云负载均衡开启https
在这里插入图片描述
1.部署到负载均衡或者直接到负载均衡列表监听器管理直接配置

在这里插入图片描述

2.点击新建按钮建立一个https的监听器、选择对应的证书
在这里插入图片描述
3.添加规则
在这里插入图片描述
4.配置规则窗口
在这里插入图片描述
5.点击配置好的规则路径关联服务器
在这里插入图片描述

6.最后使用https访问便可