frp http转发

简介: 通过FRP实现HTTP转发,可以方便地将内网服务暴露到外网,解决了内网穿透问题。在实际应用中,通过合理配置FRP和增强安全措施,可以实现稳定、高效和安全的内网服务外网访问。


FRP HTTP转发

FRP(Fast Reverse Proxy)是一款高性能的反向代理应用,用于内网穿透。它可以将内网服务暴露到外网,使得外网用户能够访问内网服务。本文将详细介绍如何使用FRP进行HTTP转发。

安装FRP

首先需要下载并安装FRP。可以从FRP的GitHub页面获取最新的发布版本。

下载FRP

  1. 前往FRP的发布页面下载适合你的操作系统的压缩包。
  2. 解压下载的压缩包,里面包含了 frps(服务端)和 frpc(客户端)两个可执行文件。

配置FRP服务端

FRP服务端负责接收外网请求并将其转发到内网。需要配置 frps.ini文件。

frps.ini 示例

[common]
bind_port = 7000

# Dashboard 配置(可选)
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
​

将配置文件保存为 frps.ini,然后启动FRP服务端:

./frps -c frps.ini
​

配置FRP客户端

FRP客户端用于将本地服务映射到FRP服务端。需要配置 frpc.ini文件。

frpc.ini 示例

假设我们要将本地的HTTP服务映射到外网,具体配置如下:

[common]
server_addr = x.x.x.x
server_port = 7000

[web]
type = http
local_port = 80
custom_domains = yourdomain.com
​

在这个示例中:

  • server_addr 是FRP服务端的IP地址或域名。
  • server_port 是FRP服务端绑定的端口。
  • [web] 定义了一个名为“web”的代理服务,类型为 http
  • local_port 是本地HTTP服务监听的端口。
  • custom_domains 是用于访问本地服务的自定义域名。

将配置文件保存为 frpc.ini,然后启动FRP客户端:

./frpc -c frpc.ini
​

实现流程

  1. FRP服务端接收外部请求:FRP服务端在配置的 bind_port端口上监听来自外网的请求。
  2. FRP服务端将请求转发到FRP客户端:当接收到外部请求后,FRP服务端将请求转发到连接的FRP客户端。
  3. FRP客户端将请求转发到本地服务:FRP客户端接收请求,并将其转发到本地HTTP服务。
  4. 本地服务处理请求并返回响应:本地HTTP服务处理请求,并将响应通过FRP客户端传回给FRP服务端,再由FRP服务端返回给外部用户。

典型应用场景

  • 内网服务外网访问:通过FRP将公司内部的Web应用暴露到外网,方便远程办公。
  • 动态IP地址映射:家庭宽带等动态IP环境下,通过FRP实现稳定的外网访问。
  • 多服务代理:同时代理多个本地服务到外网,满足复杂业务需求。

安全性考量

为了确保安全性,可以在配置中添加身份验证、TLS加密等措施。

示例:启用身份验证

frps.ini中:

[common]
bind_port = 7000
token = your_secure_token
​

frpc.ini中:

[common]
server_addr = x.x.x.x
server_port = 7000
token = your_secure_token

[web]
type = http
local_port = 80
custom_domains = yourdomain.com
​

分析说明表

步骤 说明
下载并解压FRP 获取FRP的最新版本并解压
配置FRP服务端(frps.ini) 设置服务端监听端口及可选的Dashboard配置
启动FRP服务端 使用配置文件启动FRP服务端
配置FRP客户端(frpc.ini) 设置客户端连接信息及要代理的本地服务
启动FRP客户端 使用配置文件启动FRP客户端
实现HTTP转发 FRP服务端接收外部请求并转发至本地HTTP服务
安全性配置 添加身份验证和加密措施确保连接安全

思维导图

FRP HTTP转发

安装FRP

配置FRP服务端

配置FRP客户端

实现HTTP转发

安全性考量

设置bind_port

可选Dashboard配置

设置server_addr

设置local_port和custom_domains

启用身份验证

TLS加密

结论

通过FRP实现HTTP转发,可以方便地将内网服务暴露到外网,解决了内网穿透问题。在实际应用中,通过合理配置FRP和增强安全措施,可以实现稳定、高效和安全的内网服务外网访问。

目录
相关文章
|
网络协议 安全 网络安全
使用frp端口映射实现内网穿透(SSH、HTTP服务)
使用frp端口映射实现内网穿透(SSH、HTTP服务) 一、下载
|
域名解析 网络协议 应用服务中间件
快速搭建frp的ssh和http的内网穿透
快速搭建frp的ssh和http的内网穿透
快速搭建frp的ssh和http的内网穿透
|
存储 Web App开发 监控
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
我们以前使用过的对hbase和hdfs进行健康检查,及剩余hdfs容量告警,简单易用 1.针对hadoop2的脚本: #/bin/bashbin=`dirname $0`bin=`cd $bin;pwd`STATE_OK=...
1126 0
|
Web App开发 前端开发 Java
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
线程的状态有:new、runnable、running、waiting、timed_waiting、blocked、dead 当执行new Thread(Runnabler)后,新创建出来的线程处于new状态,这种线程不可能执行 当执行thread.start()后,线程处于runnable状态,这种情况下只要得到CPU,就可以开始执行了。
823 0
|
Web App开发 前端开发
|
Web App开发 监控 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
hadoop服务器更换硬盘操作步骤(datanode hadoop目录${HADOOP_HOME}/bin    日志位置:/var/log/hadoop)1.登陆服务器,切换到mapred用户,执行jps命令,查看是否有TaskTracker进程。
1090 0
|
Web App开发 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
从hadoop移除机器把需要移除的机器增加到exclueds文件中,强制刷新datanode列表,等待decommission 状态正常后,即可停机下架,如有必要在namenode执行balancer操作。
758 0
|
Web App开发 数据库
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
可伸缩系统的架构经验 Feb 27th, 2013 | Comments 最近,阅读了Will Larson的文章Introduction to Architecting System for Scale,感觉很有价值。
2400 0
|
Web App开发 前端开发 Java
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
本文总结了java中byte转换int时总是与0xff进行与运算的原因。在剖析该问题前请看如下代码: public static String bytes2HexString(byte[] b) { String ret = ""; for (int i = 0; i < b.
1055 0
|
SQL Web App开发 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
     如果在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则在出现重复值的行执行UPDATE;如果不会导致唯一值列重复的问题,则插入新行。
847 0

热门文章

最新文章