使用FRP发布内网应用

前言

买了个树莓派,一直想在上面部署点应用,但是由于家里的ip是动态的,无法在外面访问,也没法让别人访问。找了下相关的解决方法,找到了frp,github地址:https://github.com/fatedier/frp/blob/master/README_zh.md

frp是什么

官方的介绍如下

frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。

使用场景也非常多,我主要是想将家里的服务发布到外网,对应第二点。官方的文档介绍的很详细,我这里简单介绍下我搭建的流程。


使用FRP发布内网应用_第1张图片
使用示例

frp搭建

服务器准备

frp分为服务端和客户端,需要有一台有公网IP的服务器作为服务端,家中的服务器或者电脑作为客户端。我是在阿里云服务器上搭建的。

程序下载

根据系统的类别下载对应的frp程序,地址:https://github.com/fatedier/frp/releases,红框中的分别是linux和windows系统的程序,386是32位操作系统,amd64是64位操作系统,下载完后直接解压即可。

使用FRP发布内网应用_第2张图片
下载程序

服务端配置

在云服务器上,配置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

你可能感兴趣的:(使用FRP发布内网应用)