内网穿透的高性能的反向代理应用FRP-自定义404错误页【实践可行版】
frp简介
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
为什么使用 frp ?
通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:
- 客户端服务端通信支持 TCP、KCP 以及 Websocket 等多种协议。
- 采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间。
- 代理组间的负载均衡。
- 端口复用,多个服务通过同一个服务端端口暴露。
- 多个原生支持的客户端插件(静态文件查看,HTTP、SOCK5 代理等),便于独立使用 frp 客户端完成某些工作。
- 高度扩展性的服务端插件系统,方便结合自身需求进行功能扩展。
- 服务端和客户端 UI 页面。
应用场景
把内网做好的系统,通过公网IP实现内网穿透反向代理应用,常用来支持使用开发环境,提供给客户测试系统和演示系统。
环境准备
1、安装Oracle VM VirtualBox
2、安装Centos7.x
3、MobaXterm终端
源码编译步骤
配置Go环境,安装依赖
sudo yum install gcc
下载安装Go
# 下载当前最新版的
wget https://dl.google.com/go/go1.18.linux-amd64.tar.gz
解压到/usr/local
sudo tar -C /usr/local -xzf go1.18.linux-amd64.tar.gz
配置环境变量
# 添加环境变量
vim /etc/profile
在文件的底部添加以下两行:
export PATH=$PATH:/usr/local/go/bin
export GOPATH=/usr/local/gopath
#:wq 保存退出后,重新加载profile文件
source /etc/profile
测试Go环境
go version
出现如下界面:表示安装成功
下载frp的源码包:v0.58.1
通过MobaXterm上传至/usr/local目录
#解压至/usr/local/目录
定制404错误页
frp 的http 404页面写死在frp目录的pkg/util/vhost/resource.go文件里,在resource.go文件里面的const这节,可以很清楚看到http 404的html配置,做一下简单的修改,去掉能暴露出来的frp的标识。
cd /usr/local/frp-0.58.1
#编辑404错误页
vim pkg/util/vhost/resource.go
编辑resource.go
设置代理
若不设置,下载依赖包会因为网络连接问题报错
go env -w GOPROXY=https://goproxy.cn
编译源码
make -f Makefile.cross-compiles 或者 make
生成一个bin目录,可执行文件frpc和frps。
把frp_0.46.1_linux_amd64.tar.gz其中frps文件替换即可
测试编写一个shell脚本
#! /bin/bash
basepath=/usr/local/frp_0.46.1_linux_amd64
nohup ${basepath}/frps -c ${basepath}/frps.ini > ./test.out 2>&1 &