前言
买了个树莓派,一直想在上面部署点应用,但是由于家里的ip是动态的,无法在外面访问,也没法让别人访问。找了下相关的解决方法,找到了frp,github地址:https://github.com/fatedier/frp/blob/master/README_zh.md
frp是什么
官方的介绍如下
frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。
使用场景也非常多,我主要是想将家里的服务发布到外网,对应第二点。官方的文档介绍的很详细,我这里简单介绍下我搭建的流程。
frp搭建
服务器准备
frp分为服务端和客户端,需要有一台有公网IP的服务器作为服务端,家中的服务器或者电脑作为客户端。我是在阿里云服务器上搭建的。
程序下载
根据系统的类别下载对应的frp程序,地址:https://github.com/fatedier/frp/releases,红框中的分别是linux和windows系统的程序,386是32位操作系统,amd64是64位操作系统,下载完后直接解压即可。
服务端配置
在云服务器上,配置frps.ini
[common]
bind_port = 7000
vhost_http_port = 8080
bind_port
为frp服务运行的端口
vhost_http_port
是自己设定的http访问端口
同时这两个端口需要开通外网的映射。保存上面的配置后,使用以下指令启动frp服务端。
./frps -c ./frps.ini
以下是配置自动启动的方法
首先
sudo vim /lib/systemd/system/frps.service
在frps.service里写入以下内容
[Unit]
Description=fraps service
After=network.target network-online.target syslog.target
Wants=network.target network-online.target
[Service]
Type=simple
#启动服务的命令(此处写你的frps的实际安装目录)
ExecStart=/your/path/frps -c /your/path/frps.ini
[Install]
WantedBy=multi-user.target
然后启动frps
sudo systemctl start frps
其他相关命令
// 自动启动
sudo systemctl enable frps
// 重启
sudo systemctl restart frps
// 停止
sudo systemctl stop frps
// 查看应用日志
sudo systemctl status frps
客户端配置
我这边以windows为例,打开frpc.ini,配置如下
[common]
server_addr = 服务器ip
server_port = 7000 frp运行端口
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
[web]
type = http
local_port = 80 内网服务的ip
custom_domains = 可以是域名也可以是外网ip
使用cmd运行frpc.exe,通过浏览器访问 http://www.yourdomain.com:8080 即可访问到处于内网机器上的 web 服务。windows上我使用bat文件启动,可以随时开关。
start /d "yourfrppath" frpc.exe