需求:
内网电脑上的静态文件需要暴露到公网上
内网电脑上的HTTP服务器暴露到公网上
环境:
阿里云服务器(下称服务端或者服务器端):CentOS 7,使用frp_linux_amd64的包
内网电脑(下称客户端): Windows 10,使用frp_windows_amd64的包
FRP版本:0.52.2
直接在github的release下载
https://github.com/fatedier/frp/releases
原理:
访问a.com,经过云服务器的中转,访问到位于内网电脑上的HTTP服务或者静态文件
服务器只是一个转发作用,当然也可以做P2P的点对点穿透(本文不讨论这个)
在服务端操作
linux下解压压缩包有frps、frpc等文件
frps文件即为服务器的启动文件
frpc文件即客户端的启动文件(在服务器上用不上这个文件)
新建frps.toml文件,填入如下内容
注:在0.52版本之后,原来的ini格式已经弃用了,官方推荐后续使用toml、json、yaml等风格的配置文件
bindPort = 15443 #绑定的端口,默认是7000端口,需要阿里云ECS安全组放行此端口,服务器防火墙放行此TCP端口 vhostHTTPPort = 18080 #HTTP绑定的端口,需要阿里云ECS安全组放行此端口,服务器防火墙放行此TCP端口 vhostHTTPSPort = 18081 #HTTPS绑定的端口,需要阿里云ECS安全组放行此端口,服务器防火墙放行此TCP端口 webServer.addr = "0.0.0.0" #面板监听的地址,默认是只能127.0.0.1访问,需要修改为0.0.0.0 webServer.port = 16443 #面板绑定的端口,需要阿里云ECS安全组放行此端口,服务器防火墙放行此TCP端口 webServer.user = "admin" #面板绑定的账户 webServer.password = "abc123" #面板绑定的密码 auth.token = "asdjpo1safaSAQF" # 客户端访问服务器端的token,随便写。 certFile = "/www/cert/a.com.pem" #如果需要SSL访问则需要把证书的位置指定 keyFile = "/www/cert/a.com.key"
启动服务端
./frps -c frps.toml
在客户端操作
新建frpc.toml文件,填入如下内容
serverAddr = "33.111.222.133" #服务器公网IP serverPort = 15443 # 上面填的服务器监听的端口 auth.token = "asdjpo1safaSAQF" #上面填的token [[proxies]] name = "static_file" type = "tcp" remotePort = 9999 [proxies.plugin] type = "static_file" localPath = "D:/static" # 本地文件目录,对外提供访问 [[proxies]] name = "audio_service" type = "http" localPort = 9100 # 本地http服务的端口 customDomains = ["api.a.com"]
启动客户端程序
frpc.exe -c frpc.toml
打开浏览器,进入面板查看
http://33.111.222.133:16443/
输入上面设定的账号密码
在面板的 Proxies 菜单里面出现刚才配置的HTTP、TCP即说明操作成功