搭建frp反代国内服务器实现免备案节点的详细步骤

2019年5月14日16:55:38 发表评论 76 views

虽然frp有中文文档
https://github.com/fatedier/frp/blob/master/README_zh.md
但是其实我看不太懂他在写什么,至少看完文档我还是晕乎乎的,找了两台测试服务器开始折腾吧。

frp的服务端是frps

客户端是frpc,

都同时支持windows跟linux,文件结构跟执行的命令也都一样。
我计划的模式是前端用centos  后端用windows

先下载需要的文件吧

https://github.com/fatedier/frp/releases
下载frp_0.14.0_linux_amd64.tar.gz 跟 frp_0.14.0_windows_amd64.zip
1、linux部分

解压缩tar包

用文本编辑器修改frps.ini

Bash

这份配置文件的意思是开放7000端口作为frps服务端端口,开放7500端口作为frps可以通过浏览器访问http://ip:7500/ 查看 frp 的状态以及代理统计信息展示。用户名密码,默认都为 admin
如果不需要这个,可以把[common]还有下面那些都删了。
把frps跟frps.ini两个文件传到centos服务器上的/root/frp/目录。
frps需要给执行权限。
然后防火墙需要开放7000跟7500端口。
然后通过ssh登录到服务器上

Bash

进入frp目录,执行

Bash

如果显示一堆蓝色的字符里面有 Start frps success 说明frps启动成功了。

 

2、windows部分

解压缩zip包

用文本编辑器修改frpc.ini

Bash

这份配置文件的意思是通过7000端口连接到frps服务器,节点名web1通过tcp协议绑定本地IP的80端口到frps服务器的8080端口上。
(如果你有多台服务器作为frpc服务器的话,节点名称跟remote_port要改成不同的)。

然后把frpc.exe跟frpc.ini两个文件传到windows服务器上的D:\soft\frp\目录。
双击frpc.exe运行。

如果显示一堆字符里面有 start proxy success 说明frpc也启动成功了。
3、弄成服务开机启动

frps跟frpc都启动成功了,但是毕竟是服务器,这样按照默认的方式启动总不是事,得弄成服务实现开机启动才行。官方文档没有说到这方面的。于是就自己折腾了。

 

下载脚本并解压

搭建frp反代国内服务器实现免备案节点的详细步骤frp_service.rar

 

linux部分:

把frps.sh传到centos服务器的/root/frp/目录,

给执行权限。
然后

Bash

提示success就是成功了。重启一下机器。
等机器重启好,通过浏览器访问http://ip:7500/ 能通过第一步配置的用户名密码登录进去就是OK了。

注:平时可以通过这些命令
service frps start 启动服务
service frps stop 停止服务
service frps status 查看FRP工作状态
windows部分:

把frp弄成服务是利用Windows Service Wrapper来实现的,也就是winsw-1.9-bin
把frpc-service.exe 跟 frpc-service.xml 传到windows服务器上的D:\soft\frp\目录。
(如果你把frpc放在其他目录了,记得修改xml文件里的路径)
2003的直接打开CMD就行,2008以上的,直接在右下角开始菜单的图标上右键打开“命令行提示符(管理员)”
输入

Bash
我是标题

这里是内容

把frpc安装成服务。
去服务里手动启动frpc或者执行

Bash

启动服务都行。
(如果哪天要卸载frpc了,执行frpc-service.exe uninstall即可)

 

启动好centos跟windows的服务以后,点开刚才打开的浏览器里左边菜单Proxies的TCP,应该是可以正常看到frpc服务器已经连上来了。显示绿色的online。
4、反代
我的后端windows服务器已经有iis了,在服务器上的ie访问80端口也是可以正常访问到网站的。因为网站未备案所以在外网访问出现了备案拦截提示页面。
我的前端centos服务器已经有nginx了。在nginx添加一个站点用80端口反代127.0.0.1:8080。把域名解析到centos服务器的IP上。
访问域名就可以正常访问到windows上未备案的站点了。

 

至此折腾完毕。当然根据实际情况,你也可以反着来或者全部windows跟全部liunx都行。