IP 172.17.0.1 很可能是一个 Docker IP。我假设您发布的日志来自 Discourse 容器中的 Nginx 服务。我的猜测是,您主机上的 Nginx 将请求转发给了 Discourse 中的 Nginx,而 Discourse 中的 Nginx 看到的是您主机上 Nginx 的 IP。
您可以通过以下两种方式之一来解决此问题:将 Discourse 中的真实 IP 设置为主机 Nginx 发送的某个请求头的值,或者使用套接字(socket)连接两个 Nginx 服务。
例如,在主机上的 Nginx 中,您可以设置 proxy_set_header X-Real-IP $remote_addr;,然后在 Discourse 容器中的 Nginx 中根据该请求头使用真实 IP,配置为 set_real_ip_from 0.0.0.0/0;(假设 Discourse 的 Nginx 不对外公开访问)以及 real_ip_header X-Real-IP;。您可能需要创建一个模板或运行一些 sed 命令,将其包含在 Discourse 的 Nginx 配置文件中。
另一个选项是使用套接字,并按照以下链接中的说明包含 web.socketed.template.yml:
但我的建议是,如果条件允许,请在独立的服务器上运行 Discourse,无需在其前端使用 Nginx 作为反向代理。这样会使配置更加直接和简单。