当前位置:首页 > 知识点滴 > 正文内容

frps 实现多网站穿透

xieyunshi3个月前 (10-19)知识点滴94

要通过 frps 实现多网站穿透,核心是利用 frp 的 HTTP/HTTPS 虚拟主机功能,通过域名区分不同内网网站,实现外部通过不同域名访问内网多个服务。以下是详细配置步骤:

前提条件

  • 一台有公网 IP 的服务器(运行 frps 服务端);

  • 内网有多个网站服务(如 Nginx/Apache/ 本地开发服务,假设端口分别为 8080、8081 等);

  • 已备案的域名(可选,也可用 IP + 端口,但域名更友好),并将域名解析到公网服务器 IP(如site1.example.comsite2.example.com均解析到 frps 服务器 IP)。

步骤 1:配置 frps 服务端(公网服务器)

frps 服务端需要监听客户端连接端口,并开放 HTTP 访问端口(用于外部访问内网网站)。

1.1 创建 / 修改 frps 配置文件(frps.ini

[common]
# 客户端连接frps的端口(自定义,如7000)
bind_port = 7000

# HTTP虚拟主机端口(外部访问内网HTTP网站的端口,如80)
vhost_http_port = 80

# (可选)HTTPS虚拟主机端口(如需HTTPS,设置为443)
# vhost_https_port = 443

# (可选)控制台端口(用于查看frp状态)
dashboard_port = 7500
dashboard_user = admin  # 控制台用户名
dashboard_pwd = 123456  # 控制台密码

# (可选)安全认证token(客户端需一致,防止未授权连接)
token = your_token_123

1.2 启动 frps 服务端

根据系统执行启动命令:
# Linux
./frps -c ./frps.ini

# Windows(cmd或PowerShell)
frps.exe -c frps.ini

步骤 2:配置 frpc 客户端(内网机器)

客户端需要为每个内网网站配置独立的转发规则,通过域名区分不同服务。

2.1 创建 / 修改 frpc 配置文件(frpc.ini

[common]
# frps服务端的公网IP(或域名)
server_addr = 1.2.3.4  # 替换为你的公网服务器IP
# frps服务端的bind_port(与服务端一致)
server_port = 7000
# 认证token(与服务端一致)
token = your_token_123

# 第一个内网网站(示例:本地8080端口的服务)
[web1]
type = http  # 协议类型(HTTP)
local_ip = 127.0.0.1  # 内网网站的IP(本地服务填127.0.0.1,局域网服务填对应IP)
local_port = 8080  # 内网网站的端口
custom_domains = site1.example.com  # 对应外部访问的域名(需解析到frps服务器IP)

# 第二个内网网站(示例:本地8081端口的服务)
[web2]
type = http
local_ip = 127.0.0.1
local_port = 8081
custom_domains = site2.example.com  # 第二个域名

# (可选)更多网站:复制上述[webX]格式,修改名称、端口和域名即可

2.2 启动 frpc 客户端


# Linux
./frpc -c ./frpc.ini

# Windows
frpc.exe -c frpc.ini

步骤 3:验证配置

  1. 检查域名解析:确保site1.example.comsite2.example.com已解析到 frps 服务器的公网 IP(可通过ping site1.example.com验证)。
  2. 访问测试
    • 外部浏览器访问 http://site1.example.com → 应转发到内网 8080 端口的服务;

    • 访问 http://site2.example.com → 应转发到内网 8081 端口的服务。

进阶配置(可选)

1. HTTPS 穿透

若需要 HTTPS,需在 frps 服务端配置 SSL 证书,并修改客户端类型为https
  • frps.ini 增加 HTTPS 端口和证书:
  • vhost_https_port = 443
    # SSL证书路径(需在frps服务器上放置证书文件)
    https_cert_file = /path/to/cert.pem
    https_key_file = /path/to/key.pem
  • frpc.ini 中对应网站的type改为https
  • [web1_https]
    type = https
    local_ip = 127.0.0.1
    local_port = 8080
    custom_domains = site1.example.com

2. 子路径区分(同一域名下的多网站)

若想通过同一域名的不同路径访问多网站(如example.com/web1example.com/web2),可在客户端配置中用locations指定路径:

# 子路径/web1对应内网8080
[web1_path]
type = http
local_ip = 127.0.0.1
local_port = 8080
custom_domains = example.com
locations = /web1

# 子路径/web2对应内网8081
[web2_path]
type = http
local_ip = 127.0.0.1
local_port = 8081
custom_domains = example.com
locations = /web2

常见问题排查

  1. 无法访问
    • 检查 frps/frpc 是否启动成功(查看日志,加-loglevel debug打印详细日志);

    • 确认 frps 服务器的防火墙开放了bind_port(7000)、vhost_http_port(80)等端口;

    • 验证域名解析是否正确(nslookup site1.example.com)。

  2. 域名冲突:确保custom_domains在客户端配置中唯一,不同网站不能用相同域名(除非用子路径)。
  3. HTTPS 证书问题:证书需匹配custom_domains的域名,否则浏览器会提示不安全。
通过以上配置,即可实现多网站的内网穿透,外部可通过不同域名(或路径)访问内网多个服务。


相关文章

最近几届党的历次全会讨论什么,今年说了啥

最近几届党的历次全会讨论什么,今年说了啥

党的每次全会都有其特定的讨论主题和重要内容,以下是党的十八大以来历次全会的讨论主题内容:十八届一中全会:2012 年 11 月 15 日召开,主题是选举产生新一届中央领导集体。全会选举了中央政治局委员...

建设项目用地和规划审批流程图   2025年

建设项目用地和规划审批流程图 2025年

为客观展示建设项目审批实际工作流程 ,方便各单位在工作中了解各环节相关情况 ,编制《建设项目用地和规划审 批流程图(2025年)(试行) 》。该流程图主要针对房建类项 目的一般情形 ,从前...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。