Docker容器路由

问题描述 投票:-1回答:1

我正在尝试使用docker / docker-compose来实现一个Web服务器,其中我的部分页面由PHP提供,而部分服务由Java提供。因此,当我连接到localhost/php-service时,我将被路由到运行PHP服务器的容器,并且连接到localhost/java-service会将我重定向到运行Java Web服务器的容器。

我的第一个方法,可能是错误的,是有一个单独的容器运行apache并使用mod-rewrite将我重定向到适当的容器。在尝试任何想象之前,我只是尝试使用其ip重定向到我的php服务器容器:

#.htaccess
RewriteEngine on
RewriteRule .* http://192.168.128.6/ # <- IP address of container with webserver 

这不起作用,因为我的浏览器只是将URL重写为“192.168.128.6”,然后抱怨没有找到IP。显然,重写引擎只是告诉浏览器去其他地方,它实际上并没有转发请求。我可以为每个服务器分配一个不同的端口,并将重写引擎转发到适当的端口,但我觉得必须有更优雅的方法来解决这个问题。我一直在寻找使用iptables,但它也不像是工作的正确工具......

在此先感谢您的帮助。

.htaccess docker docker-compose url-routing
1个回答
0
投票

原来我要找的是mod_proxy,而不是mod_rewrite,将其添加到.htaccess解决了这个问题!

ProxyPass         /php-service  http://{PHP_CONTAINER_IP}/php-service
ProxyPassReverse  /php-service  http://{PHP_CONTAINER_IP}/php-service

ProxyPass         /java-service  http://{JAVA_CONTAINER_IP}/java-service
ProxyPassReverse  /java-service  http://{JAVA_CONTAINER_IP}/java-service

(用实际IP替换{PHP_CONTAINER_IP}和{JAVA_CONTAINER_IP})

© www.soinside.com 2019 - 2024. All rights reserved.