您好,
我写信是为了寻求帮助,解决我一直以来遇到的一个问题:我的个人社区网站(starorigin.net)无法添加到 Discourse Hub。经过研究,我注意到多年来有许多其他人也面临类似的问题,而且不幸的是,其中一些案例仍未解决。我现在也遇到了同样的情况,非常感谢您能提供任何帮助或指导。
以下是我目前情况的总结:
-
初始成功:
- 当我首次设置我的社区网站(starorigin.net)时,我的网站已成功列入 Discourse Hub。这使得我的朋友们可以通过 Discourse 移动应用程序轻松访问社区。
-
当前问题:
- 在遵循 Discourse 社区中提供的 Cloudflare 设置教程并迁移我的服务器后,我的网站不再出现在 Discourse Hub 中。尽管我多次尝试解决此问题,但仍未能恢复列表。
- 这造成了极大的不便,因为我的朋友们无法再通过移动应用程序方便地访问社区。
-
我的尝试:
-
我已仔细检查了所有 Cloudflare 设置,以确保它们符合推荐的配置。
-
我在 Discourse 论坛上搜索了类似的问题,并尝试了建议的解决方案,但到目前为止均无效。
-
如果有人遇到过类似问题并已解决,我将非常感激您的建议。或者,Discourse Hub 团队能否考虑实施一项特殊功能,允许面临技术困难的社区所有者手动将他们的网站添加到 Hub? 对于我们这些卡住并且无法通过标准方法解决问题的人来说,这将是一个巨大的帮助。
我对我建立的社区充满热情,并希望让我的朋友和成员尽可能方便地访问它。提前感谢您的时间和支持!
pmusaraj
(Penar Musaraj)
2
DiscourseHub 向以下地址发送 HEAD 请求:
https://starorigin.net/user-api-key/new
并收到 400 错误,因此无法继续添加站点。您需要修改 Cloudflare 配置以允许访问该端点。
- 我为
/user-api-key/new 创建了一个页面规则:
- 登录 Cloudflare 控制面板。
- 导航到 规则 > 页面规则。
- 点击 创建页面规则。
- 在 如果 URL 匹配 字段中,输入:
https://starorigin.net/user-api-key/new
- 在 则设置是 下,选择:
- 缓存级别:绕过
- 安全级别:关闭
- 保存规则并进行测试。
{"errors":["param is missing or the value is empty: nonce"]}
pmusaraj
(Penar Musaraj)
4
抱歉,我不知道 Cloudflare 用户界面如何工作。您可能需要查看 Cloudflare 论坛。
感谢您的建议。我尝试禁用 Cloudflare,但仍然无法直接访问 https://starorigin.net/user-api-key/new,并且 400 错误仍然存在。这让我认为问题可能出在我的服务器端。
您能否建议我在服务器配置中应检查哪里?
谢谢!
请通过暂时禁用 Cloudflare 来测试此理论,等待 DNS TTL 过期,然后尝试将其再次添加到 Discourse Hub。
1 个赞
curl -v http://127.0.0.1:8080/user-api-key/new
* Trying 127.0.0.1:8080...
* Connected to 127.0.0.1 (127.0.0.1) port 8080
> GET /user-api-key/new HTTP/1.1
> Host: 127.0.0.1:8080
> User-Agent: curl/8.5.0
> Accept: */*
>
< HTTP/1.1 400 Bad Request
< Server: nginx
< Date: Tue, 14 Jan 2025 22:15:08 GMT
< Content-Type: application/json; charset=utf-8
< Transfer-Encoding: chunked
< Connection: keep-alive
< X-Frame-Options: SAMEORIGIN
< X-XSS-Protection: 0
< X-Content-Type-Options: nosniff
< X-Permitted-Cross-Domain-Policies: none
< Referrer-Policy: strict-origin-when-cross-origin
< X-Discourse-Route: user_api_keys/new
< Vary: Accept
< X-Request-Id: fe9303f5-ce51-4bd2-a73e-cda5a6d654e9
< X-Runtime: 0.004521
<
* Connection #0 to host 127.0.0.1 left intact
{"errors":["param is missing or the value is empty: nonce"]}
这是我服务器的调试结果。我认为我的容器可能存在一些问题,导致它无法访问。可能是什么原因,我该如何排查?如果您能提供任何帮助,我将不胜感激。
您测试的内容与我建议的完全不同,只证明了您的服务器运行正常。
您收到的错误是:
{"errors":["param is missing or the value is empty: nonce"]}
服务器是正确的。您调用此 API 的方式不正确,因此出现了错误。您将得到与 meta.discourse.org 相同的结果:
○ → curl https://meta.discourse.org/user-api-key/new
{"errors":["param is missing or the value is empty: nonce"]}
我已经关闭了 Cloudflare,允许流量直接访问我的服务器。已经三个小时了,但我在 Discourse Hub 上仍然找不到我的网站。我现在不确定该去哪里查找问题。
此声明不正确 - 对 Cloudflare 的名称服务器执行 starorigin.net 的 DNS 查询仍然返回其 IP 地址:
○ → host starorigin.net colin.ns.cloudflare.com
正在使用域名服务器:
名称:colin.ns.cloudflare.com
地址:162.159.44.75#53
别名:
starorigin.net 的地址是 172.64.80.1
starorigin.net 的 IPv6 地址是 2606:4700:130:436c:6f75:6466:6c61:7265
1 个赞
我发现其他几个社区也遇到了与我类似的问题。例如,对我来说,baidu.do (https://baidu.do/user-api-key/new) 也无法访问,但它仍然可以在 Discourse Hub 上找到。为什么会这样?\n\n即使是 OpenAI 社区,这个 URL 输出的内容也与我的个人网站相同,但它仍然可以在 Discourse Hub 上搜索到。
这些不是“问题”,而是正确的行为。
/user-api-key/new 需要发送额外的参数——从 curl 调用它确实是一个糟糕的请求。
您需要正确关闭 Cloudflare 来确定问题的根源。
1 个赞
在云端_裸奔
(在云端 裸奔)
13
朋友,您好。我已解决此问题。问题是由宝塔和1Panel的反向代理配置引起的。本质上,两个平台在其NGINX配置中都默认启用了proxy_cache。在反向代理规则中添加proxy_cache off;应该可以解决该问题。有关更多详细信息,请参阅:无法在Discourse Hub添加自己的Discourse站点解决办法 - Discourse - Discoze中文社区
1 个赞