谢谢!
已启用 cloudflare.template.yml。
但据我理解,那只是为了禁用来自 Cloudflare IP 地址的流量速率限制。
目前,我的 Prometheus 配置如下:
scrape_configs:
- job_name: forum
scrape_interval: 5s
scheme: https
static_configs:
- targets:
- forum-behind-cloudflare-dns-proxy.com
现在我面临的问题是,Discourse 无法看到请求的实际 IP 地址。因此,为了让白名单方法生效,我尝试了以下操作:
-
将我的 Prometheus 服务器的 IPv6 地址添加到
app.yml中的DISCOURSE_PROMETHEUS_TRUSTED_IP_WHITELIST_REGEX环境变量中。 -
在 Prometheus 服务器的
/etc/hosts文件中硬编码了论坛的实际 IPv6 地址。现在,论坛可以看到我的 Prometheus 服务器的 IP 地址并允许访问。
我还有其他一些问题。例如,我在容器中运行 Prometheus。宿主机的 /etc/hosts 并未在容器内共享。因此,它持续将论坛地址解析为 Cloudflare IP,并在认证过程中失败。
我可以在启动 Prometheus 时通过 -v /etc/hosts:/etc/hosts 将宿主机的 /etc/hosts 共享到 Docker 容器中,但这会导致如下错误:
Get "https://forum-behind-cloudflare-dns-proxy.com:443/metrics": dial tcp [<ipv6-address>]:443: connect: cannot assign requested address
现在我需要解决这个具体问题。
编辑 #1:这个问题也解决了。Docker 容器内禁用了 IPv6。我可以通过在 Docker 容器中启用 IPv6 或使用 --net=host 来修复它。