【云服务器内网穿透】Debian + Nginx + HTTPS + SSH反向隧道
【云服务器内网穿透】Debian + Nginx + HTTPS + SSH反向隧道
目标
实现:
微信小程序 / 浏览器 ↓ https://test.xxx.cn ↓ Debian Nginx HTTPS ↓ SSH 反向隧道 ↓ Windows 本地 127.0.0.1:8080也就是:
公网 HTTPS 域名 访问本地 Windows 开发环境适用于:
- 微信小程序真机调试
- SpringBoot 本地开发-接口内网穿透(https)
一、服务器环境
服务器:
Debian 13 Nginx HTTPS 公网IP域名:
xxx.cn www.xxx.cn test.xxx.cn api.xxx.cn admin.xxx.cn二、DNS 解析
云厂商-DNS云解析-添加:
| 类型 | 主机记录 | 值 |
|---|---|---|
| A | @ | 你的服务器IP |
| A | www | 你的服务器IP |
| A | test | 你的服务器IP |
| A | api | 你的服务器IP |
| A | admin | 你的服务器IP |
检查:
dig+short test.xxx.cn返回:
你的服务器IP说明解析成功。
三、HTTPS 证书
安装:
aptinstall-ycertbot python3-certbot-nginx签发:
certbot--nginx\-dxxx.cn\-dwww.xxx.cn\-dtest.xxx.cn\-dapi.xxx.cn\-dadmin.xxx.cn查看证书(签发后默认自动续期):
certbot certificates查看自动续期:
systemctl status certbot.timer四、Windows 本地服务
确保本地能访问(比如本地springboot后端接口8080端口):
http://127.0.0.1:8080五、Windows 建 SSH 反向隧道(核心)
Windows PowerShell:
ssh-N-R 18080:127.0.0.1:8080 root@xxx.cn输入 SSH 密码。
不要关闭窗口。
六、SSH 反向隧道原理
Windows 建 SSH 反向隧道这条命令意思:
服务器: 127.0.0.1:18080映射到:
Windows: 127.0.0.1:8080所以:
Debian访问18080 = 访问Windows本地8080七、服务器验证
Debian:
curlhttp://127.0.0.1:18080如果返回:
<html>或者:
{"code":200}说明穿透成功。
八、Nginx 配置
创建:
nano/etc/nginx/conf.d/test.conf内容:
server { listen 80; server_name test.xxx.cn; return 301 https://$host$request_uri; } server { listen 443 ssl; server_name test.xxx.cn; ssl_certificate /etc/letsencrypt/live/xxx.cn/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/xxx.cn/privkey.pem; location / { proxy_pass http://127.0.0.1:18080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }九、重载 Nginx
nginx-tsystemctl reload nginx十、正式访问
浏览器:
https://test.xxx.cn实际上:
公网 → Debian HTTPS → SSH反向隧道 → Windows本地8080十一、微信小程序调试
微信后台:
request 合法域名: https://test.xxx.cn代码:
wx.request({url:'https://test.xxx.cn/api/test'})实际上会请求:
Windows 本地 SpringBoot十二、优点
相比:
- frp
- ngrok
- cpolar
- 花生壳
这个方案:
最稳 最轻 最安全 HTTPS现成而且:
不暴露 Windows十三、常见问题
1. 访问 502
说明:
SSH隧道断了重新执行:
ssh-N-R 18080:127.0.0.1:8080 root@xxx.cn2. 微信小程序无法请求
检查:
- HTTPS
- 合法域名
- nginx reload
- 防火墙
3. 浏览器 HTTPS 不安全
通常:
- DNS缓存
- Chrome缓存
- AAAA IPv6 记录
十四、SSH心跳监测自动重连
ssh-N-v-o ServerAliveInterval=30-o ServerAliveCountMax=3-R 18080:127.0.0.1:8080 root@catdun.cn十五、最终推荐架构
| 域名 | 用途 |
|---|---|
| xxx.cn | 官网 |
| www.xxx.cn | 官网跳转 |
| api.xxx.cn | API |
| admin.xxx.cn | 后台 |
| test.xxx.cn | 开发调试/内网穿透 |
