Docker 容器路由

Docker container routing

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

我的第一个方法,可能是错误的,是有一个单独的容器 运行 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,但感觉它也不是适合这项工作的工具...

在此先感谢您的帮助。

原来我要找的是 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})