gpt4 book ai didi

apache - 在 docker 中为 Apache 使用 ProxyPass 配置

转载 作者:行者123 更新时间:2023-12-02 18:28:00 24 4
gpt4 key购买 nike

如何在链接到不同容器的 Apache 配置中使用 ProxyPass?
硬编码IP地址有效,但有没有更通用的方法来做到这一点?

容器1 : apache 监听端口 443 代理将其传递给 Container2 端口 3000

容器2 : 运行任何监听 3000 端口的 Flask/Dancer 应用程序

#docker-compose.yml
version: '3'
services:
apache:
...
ports:
- "443:443"
container_name: Container1
network_mode: "bridge"
depends_on:
- web
web:
...
container_name: Container2
network_mode: "bridge"

-
#apache config
<VirtualHost *:443>
...
ProxyPreserveHost on
# Works but with ip
#ProxyPass / http://ip-of-container2:3000/
#ProxyPassReverse / http://ip-of-container2:3000/
ProxyPass / http://Container2:3000/
ProxyPassReverse / http://Container2:3000/
</VirtualHost>

最佳答案

所以,network_mode是问题。

我删除 network_mode并进行下一个测试:

version: '3'
services:
apache:
image: ubuntu
container_name: Container1
#network_mode: "bridge"
tty: true
web:
image: ubuntu
container_name: Container2
#network_mode: "bridge"
tty: true

之后 docker-compose up -d ,我输入 Container1并安装 ping ,我可以ping通 Container2 .
root@fe69bd6d62af:/# ping Container2
PING Container2 (172.26.0.3) 56(84) bytes of data.
64 bytes from Container2.bb_default (172.26.0.3): icmp_seq=1 ttl=64 time=0.166 ms
64 bytes from Container2.bb_default (172.26.0.3): icmp_seq=2 ttl=64 time=0.064 ms

您也可以引用 official doc要了解用户定义的网桥与默认网桥相比给我们带来了什么,主要区别如下:

User-defined bridges provide automatic DNS resolution between containers.



如果不指定 network_mode , compose 会自动为你设置一个用户定义的桥,所以你可以使用这个魔法。在我的示例中, bb_default是为我们设置的桥接器,您可以使用 docker network ls确认。另外,可以使用 docker network inspect bb_default查看这座新桥的详细信息。

关于apache - 在 docker 中为 Apache 使用 ProxyPass 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56681410/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com