frp自定义域名配置:打造专属的访问入口

frp自定义域名配置:打造专属的访问入口

【免费下载链接】frp frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。 【免费下载链接】frp 项目地址: https://gitcode.com/GitHub_Trending/fr/frp

你是否还在为复杂的端口号记忆烦恼?是否希望通过简洁的域名访问内网服务?本文将详细介绍如何使用frp配置自定义域名,实现无需记忆端口号即可访问内网服务的便捷体验。读完本文,你将掌握frp服务端与客户端的域名配置方法、常见问题解决及最佳实践。

自定义域名工作原理

frp通过虚拟主机(Virtual Host) 技术实现自定义域名功能。当客户端配置customDomainssubdomain时,frps服务端会根据HTTP请求的Host头信息将流量路由到对应的内网服务。此过程无需额外端口映射,仅需80/443端口即可支持多个域名解析。

frp架构图

核心优势

  • 简化访问:用web.yourdomain.com替代server_ip:port
  • 多服务共存:单服务器IP可托管多个网站/应用
  • 安全隐蔽:避免暴露具体端口,降低攻击面

服务端配置(frps)

基础配置

修改frps配置文件conf/frps.toml,启用HTTP/HTTPS端口并设置子域名根域:

# frps.toml
bindAddr = "0.0.0.0"
bindPort = 7000  # frp主通信端口

# 启用HTTP和HTTPS虚拟主机
vhostHTTPPort = 80     # HTTP流量入口
vhostHTTPSPort = 443   # HTTPS流量入口

# 子域名根域配置(可选)
subDomainHost = "frps.com"  # 子域名将解析为 *.frps.com

高级限制

通过conf/frps_full_example.toml可配置域名访问限制:

# 仅允许特定域名访问(白名单)
allowedDomains = ["yourdomain.com", "*.yourdomain.com"]

# 自定义404页面
custom404Page = "/var/www/404.html"

客户端配置(frpc)

1. 自定义域名(customDomains)

适合拥有独立域名的场景,需将域名A记录指向frps服务器IP:

# frpc.toml
[[proxies]]
name = "web_server"
type = "http"         # 必须为http/https类型
localIP = "127.0.0.1"
localPort = 8080

# 自定义域名列表
customDomains = ["web.yourdomain.com", "www.yourdomain.com"]

# 可选:HTTP Basic认证
httpUser = "admin"
httpPassword = "your_password"

2. 子域名(subdomain)

当服务端配置subDomainHost后,客户端可简化配置:

# frpc.toml
[[proxies]]
name = "blog_service"
type = "http"
localIP = "127.0.0.1"
localPort = 8081

# 子域名配置(最终访问地址:blog.frps.com)
subdomain = "blog"

3. 路径路由(locations)

通过路径匹配实现同一域名下的多服务分流:

# frpc.toml
[[proxies]]
name = "api_gateway"
type = "http"
localIP = "127.0.0.1"
localPort = 8082
customDomains = ["api.yourdomain.com"]

# 仅路由特定路径
locations = ["/v1", "/api"]  # 匹配/api/*和/v1/*请求

验证与管理

1. 启动服务

# 启动服务端
./frps -c ./conf/frps.toml

# 启动客户端
./frpc -c ./conf/frpc.toml

2. 仪表盘监控

访问frps仪表盘http://frps_ip:7500,查看域名代理状态:

frp仪表盘

3. 测试访问

# 测试HTTP访问
curl -H "Host: web.yourdomain.com" http://frps_ip

# 或直接通过域名访问(需DNS解析生效)
curl http://web.yourdomain.com

常见问题解决

1. 域名无法解析

  • 检查DNS配置:确保域名A记录指向frps服务器公网IP
  • 端口开放:确认80/443端口在防火墙中放行
  • 路径冲突:同一域名的不同路径代理需配置不同locations

2. HTTPS证书配置

通过frpc插件实现HTTPS终结:

[[proxies]]
name = "https_web"
type = "https"
customDomains = ["secure.yourdomain.com"]

[proxies.plugin]
type = "https2http"       # HTTPS转HTTP插件
localAddr = "127.0.0.1:8080"
crtPath = "./server.crt"  # SSL证书路径
keyPath = "./server.key"  # 私钥路径

3. 多域名证书管理

推荐使用Nginx作为frps前端代理,统一处理SSL证书:

# Nginx配置示例
server {
    listen 443 ssl;
    server_name *.yourdomain.com;
    
    ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
    
    location / {
        proxy_pass http://127.0.0.1:80;  # 转发至frps的vhostHTTPPort
        proxy_set_header Host $host;
    }
}

最佳实践

1. 配置文件组织

建议按服务类型拆分配置,通过includes合并:

# frpc.toml
includes = ["./proxies/*.toml"]  # 包含所有代理配置

# proxies/web.toml
[[proxies]]
name = "web"
type = "http"
# ...其他配置

2. 动态域名解析

配合DDNS工具自动更新域名解析:

# 示例:使用阿里云DDNS脚本
*/5 * * * * /usr/bin/aliyun-ddns.sh yourdomain.com

3. 监控与日志

通过client/admin_api.go提供的API监控域名状态:

# 查看所有代理状态
curl http://127.0.0.1:7400/api/proxies -u admin:admin

总结

自定义域名功能让frp从"端口转发工具"升级为"虚拟主机服务",通过本文配置可实现:

  • 多服务共用80/443端口
  • 专业域名替代IP+端口访问
  • 精细化流量路由与权限控制

完整配置示例可参考:

通过合理规划域名结构,可构建企业级内网穿透服务,兼顾便捷性与安全性。

【免费下载链接】frp frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议,且支持 P2P 通信。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。 【免费下载链接】frp 项目地址: https://gitcode.com/GitHub_Trending/fr/frp

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值