赞
踩
如图所示,现有公网服务器一台(220.181.38.251),
局域网主机两台,局域网地址分别是:
192.168.0.2
192.168.0.3
[common]
bind_port = 7000
服务器端比较简单,仅监听本机(即220.181.38.251) 的 7000 端口
[common]
server_addr = 220.181.38.251
server_port = 7000
[ssh]
type = tcp
local_ip = 192.168.0.2
local_port = 22
remote_port = 6001
在局域网分机上多了一些选项,[common] 一栏注明了中转服务器的地址和7000端口 [ssh] 一栏则具体设置了ssh服务的映射关系:
局域网内部IP : 192.168.0.2 (以此区分局域网内部不同的主机)
本机端口:22
远程端口:6001
也就是:将192.168.0.234 这台主机的 22 端口,映射到服务器的 6001端口。
现在,192.168.0.2 这台局域网分机的设置就已经完成了,另一台机器(192.168.0.3)设置方法完全一样,这里不再赘述。
接下来回到公网服务器(220.181.38.251)上,进行防火墙设置:
配置文件修改完毕后,我们就可以启动frp了,frps和frpc需要同时运行才能生效。
frps -c frps.ini
nohup frps -c frps.ini >/dev/null 2>&1 &
frpc -c frpc.ini
nohup frpc -c frpc.ini >/dev/null 2>&1 &
[common]
vhost_http_port = 8000
[web]
type = http
local_port = 80
custom_domains = abc.example.com
采用 nginx 为WEB服务器方案
API后台服务程序端口:5050
修改nginx配置文件:/usr/local/nginx/conf/nginx.conf
在http { } 这一节里添加以下内容:
location ~ /api/(.*) {
proxy_pass http://127.0.0.1:5050/$1;
}
存盘退出。
回到我们的前端代码,假设我们现在用axios来做ajax后台通信,那么baseURL需要设置成这样:
axios.defaults.baseURL = 'http://abc.example.com:8000/api/'
没有域名的情况下如何设置:
服务器端 frps.ini :
[common]
bind_port = 7000
局域网分机 frpc.ini :
[common]
server_addr = 服务器ip
server_port = 7000
[tcp_port]
type = tcp
local_ip = 192.168.0.2
local_port = 80
remote_port = 8080
防火墙设置:
服务器:开放7000和8080端口,
局域网机器:开放80端口
然后在浏览器输入:http://服务器ip:8080
就可以访问运行在局域网机器上的网站了。
经测试,在 IE 和 curl 命令下都能不弹窗正常访问,但是在Chrome和FF包括Edge这些所谓 “现代浏览器“ 下面,就会弹出警告窗口,对数字IP网站不友好,这个坑和frp无关,需要自行研究解决方法。
本文只介绍了如何通过FRP实现一个内网穿透的极简框架,FRP还有很多其他功能,比如SSL、TLS设置,HTTPS访问等等,本文都没有涉及,需要大家自行研究。万事开头难,一开始别整那么复杂,先把架子搭起来再慢慢研究不迟。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。