很多时候我们都希望实现外部可以访问到本地电脑的项目;有什么办法可以实现这种效果呢?
今天我就来跟大家说一个神器frp,我们来通过frp工具实现外部访问本地电脑项目;首先我们需要下载frp,下载地址:
https://github.com/fatedier/frp/releases
选择自己对应的版本
因为我是mac电脑,所以客户端下载的第一个
然后公网IP的机器是linux的所以对应下载的红色标注第二个
下载之后将对应文件存放
将
frps
及
frps.ini
放到具有公网 IP 的机器上。(第二个安装包)
将
frpc
及
frpc.ini
放到处于内网环境的机器上(自己电脑,第一个安装包)。
然后我们修改公网IP的机器的frps.ini文件
这里我是这样加的
[common]
//frp server 绑定的端口
bind_port = 7000
//设置 http 访问端口为 7001;如果服务器上80端口没被占用可以直接用80端口
vhost_http_port = 7001
//设置 https 访问端口为 7002;和上面的配置可以设置一个,看你的网站什么方式访问
vhost_https_port = 7002
//设置域名(可以自己定义,保证此域名可用)需要将此域名dns解析到这个服务器上
subdomain_host = frp.test.cn
//子域名相关配置
[wx]
auth_token = test
type = http
subdomain = wx
设置完成保存配置文件
启动frps
./frps -c ./frps.ini
然后我们再来设置本地电脑的配置文件frpc.ini
[common]
//这里和服务端的配置保持一致
auth_token = test
//这里是服务器端的公网IP
server_addr = x.x.x.x
//这里和服务器端配置的保持一致
server_port = 7000
//子域名的相关配置
[wx]
//http访问方式
type = http
//本地Ip
local_ip = 127.0.0.1
//本地网站的端口
local_port = 80
//子域名名称
subdomain = wx
完成保存配置文件
然后启动frpc
./frpc -c ./frpc.ini
然后本地apache的关于目标项目的域名配置改为wx.frp.test.cn即可,重启apache
之后浏览器访问
wx.frp.test.cn:7001 即可访问成功
这样加端口比较麻烦
我们可以给公网IP的机器加下配置文件
map $http_x_forwarded_for $clientRealip {
"" $remote_addr;
~^(?P<firstAddr>[0-9\.]+),?.*$ $firstAddr;
}
server {
listen 80;
server_name *.frp.meditool.cn;
location / {
proxy_pass http://127.0.0.1:7001;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $clientRealip; # $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
这样我们就可以wx.frp.test.cn访问成功,不需要加端口了;
亲测可行哦。