Discourse 实例在 F5 防火墙后出现“拒绝了请求的 URL”。

community.subtchallenge.com 是一个由第三方安装的 Discourse,我想以用户身份使用它。我花了数小时调试为何无法在该论坛发帖。我尝试了不同的浏览器、电脑、操作系统、IP 地址,甚至跨越不同的大洲……点击“创建帖子”按钮后的结果始终是以下情况之一(与上述任何选项无关):

  1. 帖子被正确排队等待审核,并收到通知告知我的帖子有多少正在队列中等待(这种情况仅出现在简短的测试消息中)。

  2. 帖子未被放入队列(已通过邮件与论坛维护者核实),并被重定向到一个不存在的页面。当我检查网络通信时,发现有一个向 /posts 的 POST 请求,其返回结果如下:

     请求的 URL 已被拒绝。请联系您的管理员。
     您的支持 ID 为:18286718686107272025
    
  3. 帖子在视觉上被隐藏,页面底部仅显示一个蓝色的“条”,其中有一个进度圆圈无限旋转,没有任何其他操作。我曾尝试等待数分钟,但旋转从未停止。网络日志显示 POST /posts 请求已发送,但未收到任何回复。此后,我通常还会遇到更严重的问题,例如无法重新登录(登录页面可以加载,但登录表单无法提交)。这似乎像是我的 IP 地址被静默封禁了(更换 IP 地址通常能解决问题)。

我发现,如果注意帖子内容,就可以避免情况 2(可能也能避免情况 3)。当帖子中包含单引号、双引号或换行符时,我 100% 会遇到错误 2。此外,当帖子长度超过 1000 个字符时,也会出现此错误。

这种表现是否让某些人感到熟悉?我能否向论坛维护者提出什么建议?

感谢您的建议。

您尝试过在 Discourse 安全模式下运行吗?您尝试过在网页浏览器的安全模式下运行吗?

感谢提示 Discourse 安全模式,我之前并不了解这个功能。不幸的是,它在这个论坛上似乎有些问题:作为未登录用户访问 community.subtchallenge.com/safe-mode 时,只会跳转到登录页面;而登录后访问该 URL,则会显示“哎呀,未找到此页面”。也许他们配置了某些自定义的 .htaccess 文件,导致该功能失效?

我尚未尝试浏览器安全模式,但鉴于我已在多台全新安装的系统(虚拟机、VPS)上测试过多种浏览器,我认为浏览器安全模式对此应该没有帮助。我测试过的浏览器包括 Firefox、Chromium、w3m(好吧,这里没什么可玩的)、Palemoon 和 Opera。

可能是应用程序防火墙配置不当。

感谢指点,这很可能就是问题所在。不过,他们已将问题“转交给 IT 部门”,而 IT 人员表示在他们那边未发现任何问题。这就留下了一个无法验证的说法 :frowning: 我会请他们专门检查防火墙配置。

从防火墙配置错误的角度来思考这个问题确实很有道理。系统可能只是尝试进行某种“AI”分析,而这显然对我的非测试帖子会失效。

这看起来确实是 这个问题

您的 HTTP 请求被 F5 Networks 的防火墙(称为应用程序安全管理器 ASM)拦截。它会生成如下消息:

请联系您的管理员。
您的支持 ID 是:xxxxxxxxxxxx

因此,您的应用程序传递了某些数据,ASM 出于某种原因将其检测为威胁。请将支持 ID 交给您的网络工程师,以了解具体原因。

根据 F5 文档,这表明 其防火墙拦截了该请求

此消息表明 ASM 拦截了请求。您可以在日志消息(/var/log/asm)中搜索支持 ID——匹配的日志消息将提供更多详细信息。