最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

nginx配置https协议

XAMPP新闻 admin 173浏览 0评论

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

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

dy31

搞不懂??先配好再说。

什么是HTTPS

「HTTPS」全称是「超文本传输安全协议」(英语:「H」yper「T」ext 「T」ransfer 「P」rotocol 「S」ecure,缩写:「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=cop

dy031

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

dy0031

申请证书

dy00031

dy000031

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

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

dy30

配置证书

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

dy0000031

下载下来是一个压缩包,上传到服务器后解压,有两个文件.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  #重新载入配置文件。

开放防火墙

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

dy030

dy0030

参考资料

转载请注明:XAMPP中文组官网 » nginx配置https协议