代码之家  ›  专栏  ›  技术社区  ›  John Montgomery

我如何让Tomcat5.5在Apache2之后运行,并通过mod_rewrite将请求传递到mod_jk和剥离应用程序上下文?

  •  2
  • John Montgomery  · 技术社区  · 16 年前

    /myapp “在tomcat上,我想使用apache(plus mod_rewrite )让它表现得好像在下面运行” /

    Mod_jk 安装和工作正常吗。我可以从“”访问应用程序 /myapp 修改 试着让它工作起来。它正确地得到重写 /static/ 从解包的webapp获取apache服务的URL,如果我启用重写日志,我会看到它会尝试通过所有其他请求传递给 /myapp 通过 mod_jk . 然而,mod_jk似乎没有在事后处理该请求。

    
    JkMount /myapp/*      worker1
    
    RewriteEngine On
    
    # ensure static stuff gets served by apache
    RewriteRule ^/static/(.*)$ /var/lib/tomcat5.5/webapps/myapp/static/$1 [L]
    # everything else should go through tomcat
    RewriteRule ^/(.*)$ /myapp/$1 [L,PT]
    
    

    当我在过去使用Apache1时,我必须确保 mod_jk 之前已经加载了 修改 ,但我似乎无法在Apache2下实现这一点。有什么想法吗?其他人通常是怎么做的?

    4 回复  |  直到 16 年前
        1
  •  1
  •   John Montgomery    16 年前

    最终成功地实现了这一目标。似乎我需要将一个选项设置为:

    
    JkOptions     +ForwardURICompat
    
    

    然后 mod_jk 查看重写的URL。我必须承认,我不能百分之百地肯定这是为什么,但我相信这是一种旧式的行为。如果有人能告诉我更好/更正确的方法,我很想知道。

        2
  •  1
  •   Mikola Mikola    16 年前

    大概是这样的:

    ProxyPass/静态/ http://localhost:8080/myapp/static/

        3
  •  0
  •   Olaf Kock    16 年前

    注意:当我需要它时,我已经为不同的tomcat主机或引擎使用了不同的连接器(不记得了),并部署了根应用程序。我从来没有在tomcat中尝试过虚拟主机(基于名称),只是猜测这会起作用。

    我承认,这感觉有点奇怪,但可读性的好处对我来说很有价值。

        4
  •  -1
  •   Leonel Martins    16 年前

    我们使用“R”标志而不是“PT”:

    RewriteRule ^/(.*)$ /myapp/$1 [L,R]
    

    编辑:

    JkMount /* worker1
    JkUnmount /static/* worker1
    

    那么你就不需要重写规则了。

    Apache Tomcat Site 系统的新默认设置 mod_jk 不符合 mod_rewrite +ForwardURICompatUnparsed