Docker 容器中的闪亮代理 - 绑定到 127.0.0.1 或 0.0.0.0?

Shiny Proxy in Docker Container - Bind to 127.0.0.1 or 0.0.0.0?

我正在按照说明按照 https://shinyproxy.io/security/ 保护 shinyproxy。是否可以在容器中 运行 shinyproxy 并绑定到 127.0.0.1 以便我的 nginx 反向代理可以通过 proxy_pass 将请求转发到 127.0.0.1:8080

所以类似于 sudo docker run -d -p 127.0.0.1:8080:8080 --net sp-example-net -v /var/run/docker.sock:/var/run/docker.sock shinyproxy_base:localhost,其中 bind-address: 127.0.0.1 在 application.yml。

如果我删除 bind-address:127.0.0.1 并更改 -p 8080:8080 以便 shinyproxy 正在侦听 0.0.0.0,这将起作用,但不建议这样做。

以上是否可行,还是我应该让 docker 容器监听 0.0.0.0?

如果一个进程设置了 127.0.0.1 的绑定地址,它将无法从它自己的容器外部访问(它绑定到 container-private 本地主机接口)。由于一个容器通常只运行一个进程,这会导致进程无法访问。

将容器化进程设置为侦听 0.0.0.0(“所有接口”)通常是安全的。可以从同一 Docker 网络上的其他容器访问它们,但无法从 Docker 外部访问它们,除非您使用 docker run -p 选项发布该端口。

对于您所描述的内容,将代理设置为 bind-address: 0.0.0.0 是合理的,然后使用 docker run -p 127.0.0.1:8080:8080 选项限制它的发布位置。这里-p中的地址是主机接口之一的地址。