在微信开发调试中对于一般的单向请求,直接本地开发就行了,但是微信有许多接口需要回调,因此在开发环境调试这些需要回调的接口就需要有一个公网环境。
-
方案
- 方案一:百度可以找到许多类似于natapp的商家,购买一个域名然后通过下载商家的客户端软件配置就行了
- 方案一:通过手机连接电脑wifi,同时设置代理为局域网电脑ip,最后通过电脑上的抓包工具修改目标地址,参考:https://www.cnblogs.com/hz-blog/p/wechat-local-debug-domain.html
- 方案三:通过nginx + frp完成类似于natapp的动态二级域名的内网穿透,也就是本文教程
-
环境说明
- 公网且备案域名的服务器,安装nginx、frp(服务端)。ip:182.139.94.65,域名:www.abc.com
- 局域网应用服务器,安装frp(客户端)。ip:192.168.1.2
-
配置
- nginx(公网服务器)
-
nginx.conf
http { ...... # 内网穿透 + https:[error] 6#6: *1 no resolver defined to resolve test.abc.com resolver 8.8.8.8; }
-
default.conf
# 参考nginx https配置 server { listen 443 ssl; server_name www.abc.com; ssl_certificate cert/3352148.pem; ssl_certificate_key cert/3352148.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; ssl_prefer_server_ciphers on; location / { root /usr/share/nginx/html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # 重点 location ~* /frp/(.*?)/(.*) { proxy_pass http://$1.abc.com:8080/$2; } }
-
- frp
-
frps.ini(公网服务器)
[common] bind_port = 7000 vhost_http_port = 8080 subdomain_host = abc.com
-
frpc.ini(应用服务器)
[common] server_addr = 182.139.94.65 server_port = 7000 [web1] type = http local_ip = 192.168.1.2 local_port = 8001 subdomain = test
-
- nginx(公网服务器)
-
使用说明
配置完成后,访问https://182.139.94.65/frp/test/swagger-ui.html,会转发至公网服务器的8080端口http服务,即https://test.abc.com:8080/swagger-ui.html,由于frps配置,请求被转换为https://182.139.94.65:8080/swagger-ui.html,并同时转发至frp客户端,根据frpc的配置,被转发至http://192.168.1.2:8001/swagger-ui.html。
如果需要增加客户端,只需要新增或删除frp客户端配置,即能实现动态二级域名的https服务器扩张与收缩 -
结语
其实针对本教程,还有更简单的方式,那就是购买阿里云泛域名证书,然后直接使用frp进行subdomain的配置方式通信
,可是使用泛域名的SSL证书收费昂贵,因此在证书只有一份的情况下,将证书配置在nginx下,并且在nginx的https配置中增加location /frp {...}转发至frp的vhost_http_port端口,然后在客户端与服务端使用subdomain的配置方式通信
网友评论