frp + Nginx + Cloudflare 问题排查汇总

1. frpc启动失败,toml解析报错

现象

frpc启动直接退出,journalctl报错解析错误。

原因

type = "http"代理错误写了remotePort = xxxx

remotePort仅type=tcp/udp使用;http虚拟主机代理依靠customDomains域名区分,不需要remotePort。

解决

删除http代理块内的remotePort字段。前台调试命令:

frpc -c /etc/frp/frpc.toml

2. frps dashboard curl返回 Unauthorized

现象

curl http://127.0.0.1:7500 返回Unauthorized

原因

dashboard开启账号密码鉴权,需要携带账号密码访问;本机访问正常,代表面板服务正常。

测试

curl -u admin:你的面板密码 http://127.0.0.1:7500
返回Moved Permanently301重定向到/static/属于正常现象。

3. frp dashboard子路径Nginx代理浏览器页面样式丢失、静态资源404

现象

访问域名/frp‑dashboard/,html返回,css/js全部404。

根因

frp官方dashboard不友好子路径部署,内部写死绝对路径/static/,proxy_redirect很难完全修复。

解决方案

  1. 不使用子路径;使用独立子域名代理dashboard;
  2. 或者临时直接暴露7500端口调试,用完立刻关闭;
生产环境不建议子路径部署frp dashboard。

4. 浏览器访问网站 ERR_TOO_MANY_REDIRECTS 重定向死循环

现象

CF Flexible模式下出现无限重定向。

原因

CF Flexible模式:CF对外HTTPS,回源HTTP 80;Nginx配置了return 301 https://$host$request_uri;强制跳转。

解决

Flexible模式Nginx删除80转https的301语句。

Full(strict)模式才允许配置80强制跳转443。

5. nslookup解析直接返回香港真实IP,源站IP暴露

现象

nslookup newapi.xxoo.team 直接返回43.xxx.xxx.xx香港IP。

原因

Cloudflare DNS记录是灰色云朵(仅DNS,不开启代理)。

解决

DNS记录切橙色云朵开启CF代理,解析返回CF节点IP。

遗留限制:frps 7000控制端口无法走CF,仍然会暴露香港服务器IP;防护:强token,安全组来源IP白名单。

6. Nginx代理frps 10080后访问域名全部404

原因

Nginx丢失Host请求头,frps无法识别customDomains域名。

解决

nginx location内必须携带:

proxy_set_header Host $host;

7. frpc代理不生效,浏览器访问无响应

排查步骤:

  1. 查看frpc日志,确认输出 start proxy success;没有输出代表代理配置错误。
  2. 确认国内业务监听127.0.0.1:port,业务正常本机curl可访问。
  3. 确认frpc可以正常连通香港7000端口。
  4. 确认Nginx透传Host头。

8. frps transport.tls.certFile配置了证书,浏览器访问网站依然没有HTTPS

误区

transport.tls.certFile/keyFilefrpc与frps隧道之间的TLS加密证书,和用户浏览器网站HTTPS无关

说明

网站HTTPS由Nginx或者CF负责;frps该配置不处理浏览器TLS握手。

9. maxPoolCount/poolCount参数疑问

  • transport.maxPoolCount:frps服务端,限制单个代理预建立隧道连接池上限;
  • transport.poolCount:frpc客户端,设置想要预建立连接数量;
web http业务默认tcpMux多路复用,不需要修改这两个参数,保持默认即可;主要用于高频TCP业务。

10. frp dashboard浏览器无法访问

  1. 检查frps配置webServer.addr:127.0.0.1仅本机访问;需要公网访问改为0.0.0.0。
  2. 腾讯云安全组、firewalld放行7500端口。
  3. ss -tlnp | grep 7500确认监听网卡。
安全提醒:7500不要长期暴露公网,调试完切回127.0.0.1并关闭端口。

11. 多子域名部署疑问

多个子域名网站,Nginx只需要一份location / proxy_pass http://127.0.0.1:10080;

frps依靠Host头区分不同customDomains代理;新增网站只改DNS+frpc配置,Nginx无需改动。

12. 端口安全检查清单(香港机器)

  • ✅80放行(CF回源)
  • ✅7000放行(frpc连接)
  • ❌10080:云安全组删除入站放行,仅本机回环访问
  • ❌7500:默认关闭公网访问,调试临时打开