nginx开启https配置

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

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

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

官网:https://letsencrypt.org/

默认3个月,但是可以通过脚本的方式达到永久证书,快到期的时候重新申请新的即可 具体操作请参考

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

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

2.使用腾讯云SSL证书

1.申请证书

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

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

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

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

2.安装证书到我的nginx服务器

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

2.1 查看申请后的证书并下载
nginx开启https配置_第2张图片
2.2 点击下载按钮下载证书

里面会有藏用服务器的配置文件,我这里使用的是nginx
nginx开启https配置_第3张图片

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
nginx开启https配置_第4张图片
1.部署到负载均衡或者直接到负载均衡列表监听器管理直接配置

nginx开启https配置_第5张图片

2.点击新建按钮创建一个https的监听器、选择对应的证书
nginx开启https配置_第6张图片
3.添加规则
nginx开启https配置_第7张图片
4.配置规则窗口
nginx开启https配置_第8张图片
5.点击配置好的规则路径关联服务器
nginx开启https配置_第9张图片

6.最后使用https访问即可

你可能感兴趣的:(nginx)