frp内网穿透+搭配 Nginx 一起使用
frp内网穿透+搭配 Nginx 一起使用
为什么使用 frp ?
通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:
- 客户端服务端通信支持 TCP、KCP 以及 Websocket 等多种协议。
- 采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间。
- 代理组间的负载均衡。
- 端口复用,多个服务通过同一个服务端端口暴露。
- 多个原生支持的客户端插件(静态文件查看,HTTP、SOCK5 代理等),便于独立使用 frp 客户端完成某些工作。
- 高度扩展性的服务端插件系统,方便结合自身需求进行功能扩展。
- 服务端和客户端 UI 页面。
更多文档,请参考官方文档https://github.com/fatedier/frp
准备条件
- 云服务器(必须)
- 域名(必须)
域名及服务器配置
配置域名解析
建议配置泛域名解析,一劳永逸,我的解析如下

服务器放行端口
需要放行的端口在下文中的 frps.ini 配置文件中有,我目前的放行的有 18888、8888、8843
frp的下载与安装
下载地址 https://github.com/fatedier/frp/releases,注意下载对应自己的操作系统,它的服务端和客户端是在一个包里的,所以,如果你的服务端和客户端是不同的平台,请分别下载(一般都是服务端 linux, 客户端 windows)
服务端
解压到文件夹下就行,实际上只需要 frps 开头的文件
客户端
解压到文件夹下就行,实际上只需要 frpc 开头的文件
frp 的配置
服务器的配置 (frps.ini)
1 | [common] |
客户端的配置 (frpc.ini)
1 | [common] |
到此,已经全部配置完毕,在你的客户端机子上的 8013 端口开着一个 http 服务,3306 端口开着 mysql。
分别启动服务器和客户端
- 服务器
1 | ./frps -c frps.ini |
- 客户端
1 | ./frpc -c frpc.ini |
- 浏览器打开
http://test.np.jhacker.cn:18888就能访问你客户端机子上的 8013 的服务了。 - 使用
mysql.np.jhacker.cn:83307就可以访问你本机上的 mysql 服务了。
在服务器使用 Nginx 进行反向代理访问 frp
这部分主要是为了解决每次使用内网穿透时需要添加端口的问题,比如上边的 18888 端口。nginx 的安装请自行解决,这里只给出反代的配置
1 | server { |
这样配置之后,像上边的 test 服务,可以直接使用域名,而不需要带端口访问了。
更多文章,访问我的博客jhacker
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 小鱼吃猫!

