Frp 搭建及使用 服务端设置 下载安装包
1 wget https://github.com/fatedier/frp/releases/download/v0.22.0/frp_0.22.0_linux_amd64.tar.gz
解压,进入目录
1 2 3 4 5 6 7 8 9 10 tar -zxvf frp_0.22.0_linux_amd64.tar.gz cp -r frp_0.22.0_linux_amd64 frp #方便使用 cd frp ls -a #查看文件 # 只需要关注如下几个文件 frps frps.ini frpc frpc.ini
前两个文件(s结尾代表server)分别是服务端程序和服务端配置文件,后两个文件(c结尾代表client)分别是客户端程序和客户端配置文件。 因为我们正在配置服务端,可以删除客户端的两个文件
rm -f frpc
rm -f frpc.ini
然后修改frps.ini文件
vim frps.ini
这个文件应有如下格式
1 2 3 4 5 6 7 8 9 [common] bind_port = 7000 dashboard_port = 7500 token = 12345678 dashboard_user = admin dashboard_pwd = admin vhost_http_port = 10080 vhost_https_port = 10443 # 如果没有必要,端口均可使用默认值,token、user 和 password 项请自行设置。
“bind_port”表示用于客户端和服务端连接的端口,这个端口号我们之后在配置客户端的时候要用到。
“dashboard_port”是服务端仪表板的端口,若使用7500端口,在配置完成服务启动后可以通过浏览器访问 x.x.x.x:7500 (其中x.x.x.x为VPS的IP)查看frp服务运行信息。
“token”是用于客户端和服务端连接的口令,请自行设置并记录,稍后会用到。
“dashboard_user”和“dashboard_pwd”表示打开仪表板页面登录的用户名和密码,自行设置即可。
“vhost_http_port”和“vhost_https_port”用于反向代理HTTP主机时使用,本文不涉及HTTP协议,因而照抄或者删除这两条均可。
运行 frps 服务端
此时访问 x.x.x.x:7500 并使用自己设置的用户名密码登录,即可看到仪表板界面
后台运行 server 端
1 nohup ./frps -c frps.ini &
客户端设置
同上下载 tar 包,解压,删除 frps* 的文件
修改配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 vim frpc.ini [common] server_addr = x.x.x.x server_port = 7000 token = won517574356 [rdp] type = tcp local_ip = 127.0.0.1 local_port = 3389 remote_port = 7001 [smb] type = tcp local_ip = 127.0.0.1 local_port = 445 remote_port = 7002
其中common字段下的三项即为服务端的设置。
“server_addr”为服务端IP地址,填入即可。
“server_port”为服务器端口,填入你设置的端口号即可,如果未改变就是7000
“token”是你在服务器上设置的连接口令,原样填入即可。
运行 frpc 客户端
1 2 3 4 ./frpc -c frpc.ini # 放入后台运行 nohup ./frpc -c frpc.ini &
windows 放入后台运行 frpc
frpc运行时始终有一个命令行窗口运行在前台,影响美观,我们可以使用一个批处理文件来将其运行在后台,而且可以双击执行,每次打开frpc不用再自己输命令了。 在任何一个目录下新建一个文本文件并将其重命名为“frpc.bat”,编辑,粘贴如下内容并保存。
1 2 3 4 5 6 7 8 @echo off if "%1" == "h" goto begin mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit :begin cd C:\frp frpc -c frpc.ini exit
frp 原理图
nginx反向代理配置 修改 nginx.conf
文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 # frp的接收http请求的反向代理 server { listen 80; server_name *.dev.yss.com dev.yss.com; location / { # 7071端口即为frp监听的http端口 proxy_pass http://127.0.0.1:7071; proxy_set_header Host $host:80; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_connect_timeout 7d; proxy_send_timeout 7d; proxy_read_timeout 7d; } # 防止爬虫抓取 if ($http_user_agent ~* "360Spider|JikeSpider|Spider|spider|bot|Bot|2345Explorer|curl|wget|webZIP|qihoobot|Baiduspider|Googlebot|Googlebot-Mobile|Googlebot-Image|Mediapartners-Google|Adsbot-Google|Feedfetcher-Google|Yahoo! Slurp|Yahoo! Slurp China|YoudaoBot|Sosospider|Sogou spider|Sogou web spider|MSNBot|ia_archiver|Tomato Bot|NSPlayer|bingbot") { return 403; } }
nginx热加载配置文件
防火墙端口开放
1 2 3 4 5 6 # 开启防火墙端口 7000端口和7071端口即为上面配置的bind_port和vhost_http_port端口 firewall-cmd --zone=public --add-port=7000/tcp --permanent firewall-cmd --zone=public --add-port=7071/tcp --permanent # 开启后重启防火墙,使得刚刚的修改生效 firewall-cmd --reload