使用frp搭建本地微信开发环境

2019-3-10 更新记录

再使用 TP5 进行开发的时候需要注意一下几点

  1. 关闭 trace 调试模式。
  2. 在使用路由的时候尽量确定对应接口请求的类型,如果不知道类型建议使用 Route::any();

可以使用 微信消息测试工具进行测试

原因

之前在做相关微信开发时,因为需要验证公网可以访问的到的域名,所以总是将代码推到线上服务器进行相关的测试。每次有些小改动也要进本地代码推送到服务器,服务器拉取最新代码这种重复性的操作,感觉十分繁琐,一直想找一个简单方便的方式进行微信本地环境的开发。😓 无奈之前自己太懒了……总是拖。最近几天好好研究了下特此记录下来。

准备工作

  1. 一台公网可以访问的服务器(或使用海外服务器)。
  2. 一个已经备案的域名。
  3. 内网穿透工具 frp

服务端配置

下载 frp

下载对应系统的 frp 包。因为我的公网服务器是 centOS6-x64 所以下载了 frp_0.24.1_linux_amd64.tar.gz 包。

配置 frp 服务端

  1. 在服务器上解压下载好的 frp 包。
 tar zxvf frp_0.24.1_linux_amd64.tar.gz
  1. 进入解压好的目录,编辑 frp 服务器端配置文件 frps.ini

    [common]
    bind_port = 7000             #frp 绑定的端口
    vhost_http_port = 8000       #http 访问端口
    
    1. 启动服务端 frp
    ./frps -c ./frps.ini
    

解析域名

在域名服务商配置域名解析,将域名解析到上面的服务器 ip 地址上。

配置 nginx 反向代理进行 frp 端口的转发

  1. 配置 nginx
server {
    listen 80;
    server_name wx.domain.com; # 绑定域名

    location / {
        proxy_pass http://localhost:8000; # 转发至本机8000,即在frps.ini中配置>的vhost_http_port
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
  1. 重启 nginx

本地端配置

本地使用的是 vagrant 虚拟机。使用的同样是 centOS6-x64。在配置 frp 客户端之前需要将项目代码在 nginx 中正确配置,指定的域名就是上面解析的域名。

  1. 根据本地系统环境下载对应的 frp 包。
  2. 编辑 frp 客户端配置文件 frpc.ini

    [common]
    server_addr = x.x.x.x     #frps 所在的服务器的 IP
    server_port = 7000        #frps 绑定的端口
    use_encryption = true     #将 frpc 与 frps 之间的通信内容加密传输,将会有效防止流量被拦截。 
    use_compression = true     # 对传输内容进行压缩,可以有效减小 frpc 与 frps 之间的网络流量,加快流量转发速度,但是会额外消耗一些 cpu 资源。
    
    [web]
    type = http
    local_port = 80   #为本地机器上 web 服务对应的端口
    custom_domains = wx.domain.com   #上一步中解析好的域名
    
  1. 启动 frp 客户端
    ./frpc -c ./frpc.ini
    

测试

如果一切正常那么现在随便找一台设备,访问刚才的域名就可以访问到本地的项目了。


文章作者: chenggx
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 chenggx !
评论
 上一篇
git常用命令总结 git常用命令总结
内容不定期更新 自己常用的 git alias 可以在命令行中更好的显示 log 信息alias gl="git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Cre
2019-04-06
下一篇 
MySQL 各种锁的理解 MySQL 各种锁的理解
之前总是听说 MySQL 中的锁,一直没有具体的看过,晚上抽了空看了一点就先记录了下来,后面有机会在补充。 为什么需要锁因为数据库是一个多用户共享的资源,也就是任何人都可以访问数据。当有一个商品表库存为1,当一个用户购买该商品的时候,首
2019-02-14
  目录