【问题标题】:Docker container routingDocker 容器路由
【发布时间】:2019-02-20 18:19:13
【问题描述】:

我正在尝试使用 docker/docker-compose 来实现一个网络服务器,其中我的部分页面由 PHP 提供,部分由 Java 提供。因此,当我连接到 localhost/php-service 时,我会被路由到运行 PHP 服务器的容器,而连接到 localhost/java-service 会将我重定向到运行 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,但它也不是适合这项工作的工具...

提前感谢您的帮助。

【问题讨论】:

    标签: .htaccess docker docker-compose url-routing


    【解决方案1】:

    原来我正在寻找的是 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
    

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

    【讨论】:

      猜你喜欢
      • 2023-03-03
      • 2023-04-06
      • 1970-01-01
      • 2016-08-21
      • 1970-01-01
      • 1970-01-01
      • 2020-07-22
      • 2018-07-18
      • 1970-01-01
      相关资源
      最近更新 更多