代码之家  ›  专栏  ›  技术社区  ›  FrustratedWithFormsDesigner

在不同的docker容器中无缝托管网站的不同部分

  •  0
  • FrustratedWithFormsDesigner  · 技术社区  · 7 年前

    该网站的一部分是CMS(特别是WordPress),还有一些Java web应用程序目前由tomcat处理。

    所以问题是: WordPress网站的某些部分有指向Java应用程序的链接。以前,其中一些链接是相对链接,如 /Application1

    现在,由于它们托管在不同的容器中,我不能这样做,因为WordPress容器中没有名为“Application1”的内容。我用如下重写规则修改了WordPress容器的htaccess文件:

    # Tomcat exposes port 8085
    RewriteRule ^.*Application1/(.*)$ http://localhost:8085/Application1/$1 [R,L]
    

    但这意味着,如果用户单击wordpress中Application1的链接,他们的浏览器就会将他们重定向到 localhost:8085 -如果您在本地运行这组容器,这很好,但不适用于远程用户。

    localhost 但随后需要为该堆栈将运行的每台服务器手动更新,或者为开发人员重置为localhost。

    有没有更无缝的方法来做到这一点,以便用户浏览器中的URL永远不会更改?有没有办法让它工作起来,让远程用户甚至不知道站点的不同部分托管在不同的容器中?

    2 回复  |  直到 7 年前
        1
  •  0
  •   Eugen Mayer    7 年前

    假设您在开发和生产中使用docker compose,那么您可以替换 localhost 具有 servicename 对应的上游。

    fpm:9000 如果是其域。tld/php并重定向到 java:8086 如果请求是domain.tld/Application1。

        2
  •  0
  •   FrustratedWithFormsDesigner    7 年前

    我想我找到了答案:我应该使用代理而不是重写规则。

    这似乎让我得到了我想要的:

    ProxyPass "/Application1" "http://my-tomcat-server:8080/Application1"
    ProxyPassReverse "/Application1" "http://my-tomcat-server:8080/Application1"