nginx配置https

欢迎关注笔者的微信公众号


今天下午在调试一个项目的微信端,之前因为没有服务器,采用的是内网穿透,但是有一些问题。这两天服务器到位,并且也分配了一个子域名,可以把项目部署到服务器了。

但是在调试微信公众号的时候一直报错,据说后台api必须得是https协议。。??img

搞不懂??先配好再说。

什么是HTTPS

HTTPS全称是超文本传输安全协议(英语:HyperText Transfer Protocol Secure,缩写:HTTPS;常称为HTTP over TLS、HTTP over SSL或HTTP Secure)是一种通过计算机网络进行安全通信的传输协议。HTTPS经由HTTP进行通信,但利用SSL/TLS来加密数据包。HTTPS开发的主要目的,是提供对网站服务器的身份认证,保护交换资料的隐私与完整性。

关于HTTP与HTTPS的详细信息可查看参考资料1,这里不做过多赘述。

安装nginx

  • 在编译nginx前请安装好依赖
yum install gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
  • 在配置nginx时请加上--with-http_ssl_module参数以开启SSL模块,默认不开启
./configure --with-http_stub_status_module --with-http_ssl_module

如果之前安装nginx的时候没有开启SSL模块,后面配置https会报错

nginx: [emerg] the "ssl" parameter requiresngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:37

默认安装位置/usr/local/nginx,可以通过--prefix=xxx修改

  • 编译
make

注意:如果之前已经装过nginx,但没有SSL模块,可以将这一步已经编译好的nginx替换原nginx,不用执行下一步

cp objs/nginx /usr/local/nginx/sbin
  • 安装
make install

安装SSL证书

一般SSL证书都是收费的,阿里云提供有免费版的,据说腾讯云也有,随意了,这里用的是阿里云证书。

地址:https://www.aliyun.com/product/cas?source=5176.11533457&userCode=ywqc0ubl&type=copy

https://www.aliyun.com/product/cas?source=5176.11533457&userCode=ywqc0ubl&type=copy

image-20210527204954932

申请证书

image-20210527205313240

image-20210527205423401

如果域名经过阿里云DNS解析就选手工DNS验证,否则就选文件验证

这是文件验证方式,也很简单。将验证文件上传到服务器,能以这样一个路径访问到就好。

image-20210527205716451

配置证书

下载对应的服务器类型的证书

image-20210527210013483

下载下来是一个压缩包,上传到服务器后解压,有两个文件.pem.key

  • 创建证书目录
cd /usr/local/nginx/conf  #进入Nginx默认安装目录。如果您修改过默认安装目录,请根据实际配置进行调整。
mkdir cert  #创建证书目录,命名为cert。
# 将证书文件放到cert目录中
  • 编辑Nginx配置文件(nginx.conf),修改与证书相关的配置内容
vim /usr/local/nginx/conf/nginx.conf

http块中添加server

#以下属性中,以ssl开头的属性表示与证书配置有关。
server {
    listen 443 ssl;
    #配置HTTPS的默认访问端口为443。
    #如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
    #如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。
    server_name yourdomain.com; #需要将yourdomain.com替换成证书绑定的域名。
    root html;
    index index.html index.htm;
    ssl_certificate cert/cert-file-name.pem;  #需要将cert-file-name.pem替换成已上传的证书文件的名称。
    ssl_certificate_key cert/cert-file-name.key; #需要将cert-file-name.key替换成已上传的证书密钥文件的名称。
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    #表示使用的加密套件的类型。
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #表示使用的TLS协议的类型。
    ssl_prefer_server_ciphers on;
    location / {
        root html;  #站点目录。
        index index.html index.htm;
    }
}
  • 可选:设置HTTP请求自动跳转HTTPS。
server {
    listen 80;
    server_name yourdomain.com; #需要将yourdomain.com替换成证书绑定的域名。
    rewrite ^(.*)$ https://$host$1; #将所有HTTP请求通过rewrite指令重定向到HTTPS。
    location / {
        index index.html index.htm;
    }
}
  • 重启nginx
cd /usr/local/nginx/sbin  #进入Nginx服务的可执行目录。
./nginx -s reload  #重新载入配置文件。

开放防火墙

如果是云服务器请记得开放安全组策略,笔者配置完后浏览器一直访问不通,后面才想起安全组策略没放开。。

image-20210527210937497

image-20210527211109189

参考资料

  • https://zhuanlan.zhihu.com/p/135947893
  • https://zhuanlan.zhihu.com/p/85040625
  • https://www.aliyun.com/product/cas?source=5176.11533457&userCode=ywqc0ubl&type=copy
  • https://segmentfault.com/a/1190000022673232
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值