美文网首页
nginx、frp实现支持https的微信调试(内网穿透 + 动

nginx、frp实现支持https的微信调试(内网穿透 + 动

作者: 一二先生 | 来源:发表于2020-02-15 21:49 被阅读0次

    在微信开发调试中对于一般的单向请求,直接本地开发就行了,但是微信有许多接口需要回调,因此在开发环境调试这些需要回调的接口就需要有一个公网环境。

    • 方案

      • 方案一:百度可以找到许多类似于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
          
    • 使用说明
      配置完成后,访问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的配置方式通信

    相关文章

      网友评论

          本文标题:nginx、frp实现支持https的微信调试(内网穿透 + 动

          本文链接:https://www.haomeiwen.com/subject/dodefhtx.html