最近使用 Egg 写了一个简单的接口,因为要在小程序上测试,所以本地部署一个 Https 环境,使用 Sunny-Ngrok 做内网穿透,官方教程看的不是很明白,踩了不少坑,所以完整的记录一下整个流程。
流程如下:
1、买域名,申请免费证书(本文以腾讯云为例)
2、部署证书到本地的 nginx 服务器上
3、启动 Sunny-Ngrok 隧道,访问本地服务
4、nginx 转发本地的egg接口
完成以上四步后,可以实现再浏览器访问https连接后,通过 Sunny-Ngrok 可以访问本地的某个地址,然后通过 nginx 代理到 Egg 开启服务的地址。
1 买域名
按照腾讯云的提示填写资料,备案后,等待域名的服务状态和DNS状态变成正常。
2 域名解析到 Sunny-Ngrok 的服务器
再上图的解析中可以按照如下填写一条记录,其中记录值要写 Sunny-Ngrok 的服务器。添加完成后,可以点击灰色的 SSL 去申请一个证书。
证书申请后需要验证才能使用,腾讯云会自动再我的域名-解析中填写,如果没有可以手动填写来完成验证。
3 部署证书到本地的 nginx 服务器上
在官网下载nginx
ps:选择stable version下载就行,一开始下错了版本,导致运行nginx时候,总是报错nginx: [emerg] unknown directive “listen”,后来又下了最新版才没再报错了。
配置 conf/nginx.conf 文件,https部分配置如下,证书和私钥文件可以在腾讯云下载。
http {
server {
listen 443 ssl;
server_name api.testinging.top;
ssl_certificate 1_api.testinging.top_bundle.crt; // 证书,默认在当前目录
ssl_certificate_key 2_api.testinging.top.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_http_version 1.1;
proxy_read_timeout 30s;
proxy_set_header Host $http_host;
proxy_set_header Connection "";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://127.0.0.1:8000;
}
}
}
这样配置的意思是,通过https访问本地443端口后,会转发到8000端口。
使用nginx命令:
./nginx # 启动服务
./nginx -s stop # 关闭服务
./nginx -t # 测试配置文件是否正确
./nginx -s reload # 重新加载
4 开启隧道
Sunny-Ngrok启动教程很详细,这里就只贴一下隧道参数。
启动好隧道之后,访问https就能看到本地的 Egg 项目啦。