使用frp实现内网穿透

分类: 工具
日期: 2022-08-22
浏览: 906

定义

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

下载

访问GitHub地址,选择你系统的软件。一般会下载两个,一个是服务端的(服务器一般是Linux的,所以下载linux_amd64即可),一个是客户端的(我的是Windows的,所以下载windows_amd64)。

  • 服务端:*linux_amd64.tar.gz
  • 客户端:*windows_amd64.zip

服务端设置

先下载软件,随便放到某个目录中。鉴于GitHub的访问速度,此处使用了代理进行下载。

sudo wget https://ghproxy.com/https://github.com/fatedier/frp/releases/download/v0.44.0/frp_0.44.0_linux_amd64.tar.gz

解压后,进入目录,文件目录如下:

-rwxr-xr-x 1 1001 121  11M Jul 11 00:15 frpc
-rw-r--r-- 1 1001 121  11K Jul 11 00:19 frpc_full.ini
-rw-r--r-- 1 1001 121  126 Jul 11 00:19 frpc.ini
-rwxr-xr-x 1 1001 121  14M Jul 11 00:15 frps
-rw-r--r-- 1 1001 121 5.6K Jul 11 00:19 frps_full.ini
-rw-r--r-- 1 1001 121   47 Aug 19 15:21 frps.ini
-rw-r--r-- 1 1001 121  12K Jul 11 00:19 LICENSE

frpc是客户端相关的,frps是服务端相关的。

编辑frps.ini

  • bind_port:frp运行时使用的端口
  • vhost_http_port:监听http请求的端口
[common]
bind_port = 7000
vhost_http_port = 8080

运行frps

./frps -c ./frps.ini

客户端设置

编辑frpc.ini

  • server_addr:服务器的公网IP
  • server_port:服务器上frp的端口,与frps.ini中的bind_port保持一致
  • local_port:本地项目的端口,比如你正在开发的Vite项目的5173端口
  • custom_domains:自定义域名(需要将该域名解析到服务器的公网IP)
[common]
server_addr = 150.158.84.100
server_port = 7000

# 可配置多个web
[web]
type = http
local_port = 5173
custom_domains = www.yourdomain.com

运行frpc

./frpc -c ./frps.ini

解析域名

我们在frpc.ini中配置了custom_domains,目前访问该域名不会有任何结果,还需要去域名服务商处将该域名解析到服务器的公网IP上。

到此,访问www.yourdomain.com:8080就会访问到本地的5173端口,即访问localhost:5173

配置Nginx

可以通过Nginx的反向代理隐藏:8080进行访问。

server {
    listen 80;
    server_name www.yourdomain.com;

    location / {
        proxy_pass http://www.yourdomain.com:8080;
    }
}

至于如何使用Supervisor为frp添加守护进程,使其可以后台执行,大家可参考进程管理器 Supervisor 的安装和使用。内网穿透的使用场景还挺多的,比如开发微信小程序;比如某个项目还未开发完成,领导说现在就要在公网上看到(SB);再比如你有个树莓派...

版权声明
作者:不二
来源:不二博客
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论
赶快发表评论吧~
发表评论