Nginx proxy_pass到Docker端口映射的IPtables规则

时间:2019-12-15 20:27:06

标签: docker nginx iptables

我需要弄清楚一个IPtables规则,以将Docker容器端口映射到localhost端口。

/etc/hosts/ 127.0.0.1 mysubdomain.coolapp.org

并使用此nginx反向代理服务器块进行测试

server {
    listen 80;
    server_name mysubdomain.coolapp.org;

    location / {
        proxy_pass http://127.0.0.1:8088;
}

如果使用

映射到0.0.0.0,则使用Docker

docker run --network="host" -p "0.0.0.0:8088:80" cool-app-image

任何人都可以使用coolapp.org:8088

直接访问该应用程序

当我使用

映射到127.0.0.1

docker run --network="host" -p "127.0.0.1:8088:80" cool-app-image

用户必须浏览到http://mysubdomain.coolapp.org

酷,很棒!

除了现在启用IPTables和默认DROP策略外,唯一有效的配置是绕过防火墙coolapp.org:8088

echo "Set default policy to 'DROP'"
$IPT -P INPUT   DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT  DROP

所以我需要一个IPTables配置,该配置允许端口在反向代理和Docker之间进行通信。

要尝试接受从docker0到nginx代理的输出,我尝试:$IPT -I OUTPUT -o docker0 -d 127.0.0.1/0 -j ACCEPT

每个({https://docs.docker.com/network/iptables/) 还尝试在0.0.0.0 docker run --network="host" -p "0.0.0.0:8088:80" cool-app-image

下运行

然后将除ip之外的所有其他内容都丢弃到docker

$IPT -I DOCKER-USER -i eth0 ! -s <xxx.xxx.xxx.ip> -j DROP$IPT -I DOCKER-USER -i eth0 ! -s 127.0.0.1 -j DROP

..但没有任何作用

哪种IPtables规则集将允许Docker和localhost反向代理端口进行通信,但只能安全地与127.0.0.1/localhost进行通信?

私人VLAN是答案吗?

是否可以使用编排工具进行混合容器/主机联网?

0 个答案:

没有答案