问题描述
我正在按照说明进行操作,以根据https://shinyproxy.io/security/保护Shinyproxy。
是否可以在容器中运行Shinyproxy并绑定到127.0.0.1,以便我的Nginx反向代理可以通过proxy_pass
将请求转发到127.0.0.1:8080
?
类似于application.yml中的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
。
如果我删除了bind-address:127.0.0.1
并更改了-p 8080:8080
,以使Shinyproxy正在监听0.0.0.0
,这是可行的。
以上是否可行,还是应该让Docker容器继续监听0.0.0.0?
解决方法
如果将进程的绑定地址设置为127.0.0.1,则将无法从其自己的容器外部访问该进程(该进程绑定到容器专用的localhost接口)。由于容器通常只运行一个进程,因此使该进程不可访问。
设置容器化进程以侦听0.0.0.0(“所有接口”)通常是安全的。可以从同一Docker网络上的其他容器访问它们,但是除非您使用docker run -p
选项发布该端口,否则不能从Docker外部访问它们。
对于您要描述的内容,将代理设置为bind-address: 0.0.0.0
,然后使用docker run -p 127.0.0.1:8080:8080
选项限制发布的位置是合理的。 -p
中的地址是主机接口之一的地址。