新闻中心

了解 FRP 的最新动态和更新

发布日期:2026年6月11日

FRP HTTP穿透详解:域名路由与多站点配置实战

HTTP穿透是FRP最常用的穿透类型之一,相比TCP穿透需要记忆端口号,HTTP穿透支持域名路由,用户可以通过友好的域名访问穿透服务,体验更加便捷。FRP的HTTP穿透功能相当完善,支持多域名绑定、子域名分配、Host头重写、WebSocket代理等特性,本文将深入介绍HTTP穿透的原理与实战配置。

一、HTTP穿透路由原理

当外部用户访问http://app.example.com:8080时,请求首先到达frps服务器的8080端口(vhost_http_port)。frps根据请求头中的Host字段(app.example.com)查找匹配的穿透服务配置,找到后将请求转发给对应的frpc客户端,frpc再转发给本地服务。整个过程中,域名是路由的关键依据——不同的域名可以路由到不同的frpc客户端或同一frpc的不同本地服务,实现单端口多服务的复用。

二、多域名与子域名配置

一个HTTP穿透服务可以绑定多个域名:custom_domains=app.example.com,www.example.com,api.example.com。所有绑定的域名都会路由到同一个本地服务。也可以配置多个HTTP穿透服务,分别绑定不同的域名,路由到不同的本地服务:[web1] type=http local_port=3000 custom_domains=app.example.com [web2] type=http local_port=5000 custom_domains=api.example.com。对于子域名场景,可以使用泛域名解析配合FRP实现动态子域名:DNS设置*.example.com指向frps,frpc配置custom_domains=dev-abc.example.com即可使用任意子域名。

三、Host头重写与WebSocket支持

某些后端服务需要正确的Host头才能正常工作,可以使用host_header_rewrite参数重写转发请求的Host头:host_header_rewrite=127.0.0.1或host_header_rewrite=local-service.internal。WebSocket支持是HTTP穿透的重要特性,FRP会自动识别WebSocket升级请求并正确处理长连接,无需额外配置。只需确保本地WebSocket服务正常运行,配置HTTP穿透后即可正常使用。对于需要sticky session的场景(如Socket.IO),FRP也提供了相应的会话亲和性支持。