让 Discourse 能够看到 Prometheus 服务器的 IP

谢谢!

已启用 cloudflare.template.yml:slight_smile: 但据我理解,那只是为了禁用来自 Cloudflare IP 地址的流量速率限制。

目前,我的 Prometheus 配置如下:

scrape_configs:
        - job_name: forum
          scrape_interval: 5s
          scheme: https
          static_configs:
                  - targets:
                          - forum-behind-cloudflare-dns-proxy.com

现在我面临的问题是,Discourse 无法看到请求的实际 IP 地址。因此,为了让白名单方法生效,我尝试了以下操作:

  1. 将我的 Prometheus 服务器的 IPv6 地址添加到 app.yml 中的 DISCOURSE_PROMETHEUS_TRUSTED_IP_WHITELIST_REGEX 环境变量中。

  2. 在 Prometheus 服务器的 /etc/hosts 文件中硬编码了论坛的实际 IPv6 地址。现在,论坛可以看到我的 Prometheus 服务器的 IP 地址并允许访问。:slight_smile:

我还有其他一些问题。例如,我在容器中运行 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 来修复它。