1Panel + FRP 内网穿透建站遇到的问题

  • 1. 文章无法发布
  • 这个小意思啦,WAF设置一下就好了。

  • 2. 当部署到公网后,发现无法登录Halo控制台。
  • 这里就求助我了,我看了一下登录请求,返回500. 提示未知错误。我心想,这不就是WAF的问题吗,于是又去帮他弄WAF规则,结果很显然 不行。不然也不会有这一条了。

    具体步骤:

    关闭WAF规则中的 SQL 注入 XSS防御 参数规则。无法登录
    关闭当前网站的WAF功能。 无法登录
    关闭WAF功能总开关。成功登录
    你不会以为到这就结束了吧,我当然不甘心。到底是哪里出问题了呢。

    于是我本地搭了环境开始测试,非常明显刚搭好用FRP完成穿透就无法登录了。

    这次没有关闭WAF 直接去看网站日志。

    发现请求全部都是127.0.0.1而不是我访问的真实IP 这个很正常 FRP 都这样。

    看错误日志。果然让我找到了端倪看下面的报错

    </s><i> </i>2024/04/29 00:20:54 [error] 853#853: *715034 lua entry thread aborted: runtime error: ./waf.lua:148: Expected value but found invalid token at character 1 stack traceback: coroutine 0: [C]: in function 'decode' ./waf.lua:148: in function 'waf_api' ./waf.lua:172: in main chunk, client: 127.0.0.1, server: halo.broue.cn, request: "POST /login HTTP/1.1", host: "halo.broue.cn", referrer: "https://halo.broue.cn/console/login?login-type=password"<i> </i><e>

    很明显 报错还是WAF的问题。最近1Panel刚发布专业版 问题还是蛮多的。

    到这里问题就结束了该去给1Panel提issues了。
    当然 还有一种解决方案。这个就刚好涉及到上面提到的一个问题了。那就是如何获取用户真实ip
    不能打开日志一瞧全部都是127.0.0.1吧。

  • 3. FRP内网穿透获取用户真实IP
  • 解决方案。
    在OpenResty配置文件中的 http 块添加下面两行,这个是获取CDN真实IP的方法。到这里也是同样的。
    这两行代码是Nginx配置中的两个指令,用于获取用户的真实IP地址。

    </s><i> </i>set_real_ip_from 0.0.0.0/0; real_ip_header X-Forwarded-For; set_real_ip_from 0.0.0.0/0;:<i> </i><e>

    这个指令设置了允许从哪些IP地址范围获取真实IP。在这里,0.0.0.0/0表示允许从任何IP地址获取真实IP。实际上,这个值可以根据实际情况进行修改,例如只允许从本地局域网内的IP地址获取真实IP。
    real_ip_header X-Forwarded-For;:这个指令指定了从哪个HTTP头部字段获取真实IP。在这里,X-Forwarded-For是一个常见的头部字段,用于表示客户端的真实IP地址。当客户端通过代理服务器访问时,代理服务器会在请求头中添加一个名为X-Forwarded-For的字段,其中包含了客户端的真实IP地址。因此,通过设置这个指令,Nginx可以从X-Forwarded-For头部字段中获取到用户的真实IP。

    服务器就可以获取到客户端的真实IP了。当然 X-Forwarded-For是可以伪造的,

    是原创的技术帖嘛

    如果不是原创需要加上搬运标签和原文链接

    可以在frp里把Forwarded覆盖掉