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})
我正在尝试使用 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})