首页 > 其他分享 >内网穿透的高性能的反向代理应用FRP-自定义404错误页【实践可行版】

内网穿透的高性能的反向代理应用FRP-自定义404错误页【实践可行版】

时间:2023-03-08 19:24:40浏览次数:57  
标签:自定义 404 frp usr 公网 go FRP local

frp简介

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

为什么使用 frp ?

通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:

  1. 客户端服务端通信支持 TCP、KCP 以及 Websocket 等多种协议。
  2. 采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间。
  3. 代理组间的负载均衡。
  4. 端口复用,多个服务通过同一个服务端端口暴露。
  5. 多个原生支持的客户端插件(静态文件查看,HTTP、SOCK5 代理等),便于独立使用 frp 客户端完成某些工作。
  6. 高度扩展性的服务端插件系统,方便结合自身需求进行功能扩展。
  7. 服务端和客户端 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.46.1

源码包地址:https://codeload.github.com/fatedier/frp/tar.gz/refs/tags/v0.46.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.46.1
#编辑404错误页
vim pkg/util/vhost/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 &

 

标签:自定义,404,frp,usr,公网,go,FRP,local
From: https://www.cnblogs.com/ossbar/p/17195791.html

相关文章

  • vue-自定义指令合集
    v-copy(一键复制)/**需求:实现一键复制文本内容,用于鼠标右键粘贴。*思路:*1、动态创建textarea标签,并设置readOnly属性及移出可视区域*2、将要复制的值赋给text......
  • hibernate跨数据库,json字段处理方案,自定义扩展JsonStringType
    一、背景对于一些不经常更新的静态数据,我们喜欢使用json格式存储。推荐的做法是将json数据存储在key-value数据库,但这无疑增加了技术成本,所以我们通常还是存储在RDB数据库......
  • C++自定义比较函数的bug
    autocmp=[](intx,inty){returntrue;};priority_queue<int,vector<int>,cmp>q;报错第三个参数失配,需要一个类型,而不是对象。平时用sort直接传cmp习惯了,才发......
  • [java]-自定义注解
    aop+自定义注解注解基础1.Java注解的描述java注解又叫做java标注,是java的一种注释机制,在jdk5.0引入。其可以作用在类、方法、变量、参数和包上。另外,其可以通过反射来获......
  • jeecg-boot中分页接口用自定义sql和list实现
    1、controller中@ApiOperation(value="分析仪工作状态和报警-3列-分页",notes="分析仪工作状态和报警状态-分页")@ApiImplicitParams({@ApiImpli......
  • 设计模式5——自定义Spring框架
    1、Spring核心功能结构Spring大约有20个模块,由1300多个不同的文件构成。这些模块可以分为:核心容器、AOP和设备支持、数据访问与集成、Web组件、通信报文和集成测试等。下......
  • 【win10优化系列】FRP内网穿透-远程桌面
    前言frp采用Golang编写,支持跨平台,仅需下载对应平台的二进制文件即可执行,没有额外依赖。frp主要由客户端(frpc)和服务端(frps)组成,服务端通常部署在具有公网IP的......
  • 生成你的自定义密码本Python
    python生成一个自定义密码本importitertoolsasitsimportos#定义生成密码本的函数defgenerate_passwords(length,combination):ifcombination=="1":......
  • 直播平台源代码,Android自定义View实现呼吸灯效果
    直播平台源代码,Android自定义View实现呼吸灯效果自定义View自定义BreathView的Kotlin代码如下: importandroid.animation.ValueAnimatorimportandroid.animation.V......
  • EF7数据库提供者的自定义值生成器
    本文将讲解提供者使用值生成器的原理。因代码太多,本文只摘要重要代码,并且删除了代码中的注释。如果您不了解,如何使用EF的值生成器?见这篇文章:《EF7创建模型值生成篇》?SqlS......