最近打算开发一款小程序,其中服务器配置强制 HTTPS 协议,下面纪录配置过程:


1、申请 SSL 证书

在这个入口 SSL证书 - 腾讯云 申请,这里由不同证书的对比,其中域名型 DV 是免费的:

申请好了之后按照指引设置域名 TXT 解析即可,这里不赘述。


2、Nginx 配置 DV 证书

在 Nginx 配置目录里执行下列代码:

$ cd /etc/nginx  # 如果这是你的配置目录
$ mkdir sites-enabled
$ cd sites-enabled
$ mkdir cert     # 通过 FTP 或其他方式上传你的证书文件(腾讯云会把文件通过邮件发给你)

$ cd ..
$ vim https.conf

# 填入以下数据
server
{
        listen 443;
        server_name stcms.local.camp;        # 对应的主机域名
        ssl on; 
        ssl_certificate sites-enabled/cert/1_stcms.local.camp_bundle.crt;  # 腾讯云给出的证书(名字要改成自己的)
        ssl_certificate_key sites-enabled/cert/2_stcms.local.camp.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 / {
            proxy_pass http://127.0.0.1:80;  # 实际的程序监听地址
            proxy_set_header Host $host;
            proxy_set_header X-Real-Ip $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

# 回到主配置文件,添加这份配置文件
$ cd ..
$ vim nginx.conf

# 在 server 的同级添加如下代码:
# setting for a SSL enabled server
include /etc/nginx/sites-enabled/*.conf;

# 验证是否正确
$ sudo nginx -t 

# 热更新 Nginx 配置
$ sudo nginx -s reload


一切顺利的话,你就可以通过 HTTPS 协议访问你的网站了。



参考连接:

man mask