frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp, http, https 协议。这里仅介绍 http 协议搭建,通过固定域名从外网访问内网网站。
frp 包含服务端和客户端两个工具。服务端用于提供内网穿透服务(类似花生壳);客户端,提供内网穿透请求。
本例服务端采用 CentOS,客户端使用 Windows。
1、下载
下载地址:https://github.com/fatedier/frp/releases
本例使用版本如下:
-
Linux 版本为:frp_0.13.0_linux_386.tar.gz
-
windows 版本为:frp_0.13.0_windows_386.zip
这个两个版本也可以从百度网盘下载:http://pan.baidu.com/s/1mih3KNI
服务端下载
wget https://github.com/fatedier/frp/releases/download/v0.13.0/frp_0.13.0_linux_386.tar.gz
客户端下载
直接从浏览器下载。
2、安装
frp 是绿色软件,解压后即可使用。
下载的 frp 压缩包里同时包含服务端和客户端 个工具,frps 是服务端,frpc 是客户端。
将 frp 压缩包解压到合适的目录。
服务端解压命令如下:
tar -zxvf frp_0.13.0_linux_386.tar.gz
3、配置
服务端和客户端工具都对应有一个同名的 ini 文件,就是他们的配置文件。(目录里还有两个名称中包含“_full”字符串的文件,不用管它)
服务端配置
cd frp_0.13.0_linux_386
vi frps.ini
frps.ini 内容编辑如下:
[common]
bind_port = 7000
vhost_http_port = 8080
bind_port 是服务端接收客户端请求和数据交互的端口。
vhost_http_port 是内网映射到外网的对外端口。vhost_http_port 必须与客户端配置的域名一起使用,例如:http://frp.biliyu.com:8080。这里的 8080 对应 vhost_http_port 的值,frp.biliyu.com 对应客户端配置的域名(参加下文)。
客户端配置
使用文本编辑器打开 frpc.ini 文件,内容编辑如下:
[common]
server_addr = *.*.*.*
server_port = 7000
[web]
type = http
local_port = 3000
custom_domains = frp.biliyu.com
server_addr 填写服务器 IP 地址(请将 *.*.*.* 替换为自己的服务器 IP)。
server_port 填写服务器的 bind_port。
type 默认为 http。
local_port 填写需要映射到外网的网站端口。
custom_domains 填写将要从外网访问的域名。(与服务器端配置的 vhost_http_port 一起决定网站最终的外部访问地址)
4、域名配置
使用 A 记录添加一个二级域名,指向服务器 IP。
5、运行
先要启动服务器端工具,再启动客户端工具,否则客户端无法注册到服务端。
启动服务端工具
./frps -c frps.ini
启动客户端工具
./frpc -c frpc.ini
从外网访问网站
http://frp.biliyu.com:8080
6、使用 80 端口访问
有些时候必须使用 80 端口访问网站服务,比如微信公众号服务。将服务器端的 vhost_http_port 参数配置成 80 就可以了。
但是,有时候 80 端口被 apache 或 nginx 使用了,那么就要通过修改 apache 或 nginx 的配置来解决。修改配置的目的是将域名域名对应的 80 端口转发到 vhost_http_port 配置的端口上来。
以 nginx 为例:
server {
listen 80;
server_name frp.biliyu.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_set_header Host $host;
proxy_set_header X_Real_IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://frp.biliyu.com:8080;
}
}
7、服务端在后台运行
使用 vi 新建 frps.sh 文件,内容如下:
./frp_0.13.0_linux_386/frps -c ./frp_0.13.0_linux_386/frps.ini
修复 frps.sh 为可执行文件:
chmod 777 frps.sh
使用 nohup 命令实现后台运行服务端:
nohup ./frps.sh &