使用frp内网穿透 让本地项目跑在”线上”环境 再也不担心不在局域网内啦

其实老早就有计划想这么搞了, 奈何没什么动力. 毕竟咋们小公司, 不都在一个局域网吗? 直到今天: 要调试支付回调, 我想, 是时候让自己的mac"暴露"在公网了!

事前准备

你需要一台拥有公网IP的服务器, 我用的是阿里云的最低配ecs(应该),ecs.t6-c2m1.large, 带宽我选的按量计费, 直接拉满80M, 因为本身使用率不高, 固定带宽既没性价比, 而且万一要传个文件之类的呢, 哭死你, 按量计费首当其冲, 最后算下来24块/月
一个域名(如果https的话需要, 或者你自己搞ip证书, 感觉挺麻烦)

建立目标

由于经常会同时调试多个项目, 显然只穿透某一个端口会有点略显鸡肋, 所以计划将6850-6900这个范围内的端口都穿透出去
目标端口: 6850-6900

然后就是https的问题, 要走https的话就不能直接使用ip:端口的方式了, 或者说可以用, 但是巨麻烦, 我这里使用的是nginx反向代理来实现
目标协议: 支持https

开始搭建服务端环境

我用到的服务端是debian系统,x86_64架构, 和ubuntu指令差不多, 默认用户root, 非root用户下, 某些指令请配合sudo使用, 比如apt-get

1.首先先安装nginx

2.然后下载frp frp最新版本下载地址

frps既是我们需要使用到的(我一般都会在服务端上删除frpc相关的文件, 因为这是客户端使用的, 客户端上同理)
其中frps_full.ini中为详细的配置说明(官方良心啊), 当然, 我也会直接告诉你足够使用的配置
编辑frpc.ini文件, 按照自己的需求修改下面的配置

保存, 然后执行nohup ./frps -c frps.ini & 直接运行并置于后台

至此, frp服务端相关的配置就完成了, 接下来是nginx
由于个人习惯问题, 我喜欢将nginx的配置文件放置于/etc/nginx/conf.d目录下, 所以这里都按照我自己的习惯来, 先直接mkdir -p /etc/nginx/conf.d/创建目录, 然后修改nginx的基础配置文件/etc/nginx/nginx.conf, 在http节点的任意地方加入include /etc/nginx/conf.d/*.conf;client_max_body_size 100m;, 如下示意

然后cd到/etc/nginx/conf.d/目录下, 新建配置文件mac.xiaoc.conf, 配置内容如下

好了, 泛解析nginx配置也搞定, 整个服务端的配置就到此结束, 记得使用nginx -t检验脚本, 并nginx -s reload重启以使配置生效

客户端配置

客户端配置起来就很简单, 首先还是下载对应客户端版本的frp, 下载方式就不再赘述了, 由于我是mac m1, 官方提供的linux_arm64我也用不了, 所以自己编译了下, 详情见这篇日志
下载完过后, frpc既是我们需要用到的客户端, 配置frpc.ini, 内容如下

最后只需要设置一个开机启动或者每次手动运行一次nohup ./frpc -c frpc.ini &即可. 运行过后前往http://ip:7500, 点击左侧的Proxies - TCP查看, 如果出现了很多的mac-debug_, 并且右边显示绿色的online, 则为整个流程都配置成功了!

最后的最后, 为你的域名加上泛解析*.mac, 记录类型为A, 记录值为你服务器的ip, 等解析生效过后即可通过https://6850.mac.xxxx.cn正常访问到你mac本地的6850端口!

PS

阿里云, 腾讯云等大部分云服务器都有防火墙(比如阿里云的安全组), 请保证安全组内7000(TCP), 7001(UDP), 7500(TCP)和设置的6850-6900端口在白名单内, 我是简单暴力, 因为也不是什么重要的服务器, 直接所有端口全部open!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

00:00/00:00