好的,所以我想让一个在 tomcat (5.5) 中运行的 Web 应用程序在 apache 2(准确地说是 2.2.3)后面运行,从站点的根目录(即没有上下文)提供服务,并提供静态内容通过 apache。
因此,如果应用程序在 tomcat 上的“/myapp
”下运行,我想使用 apache(加上 mod_rewrite
)使其表现得就像在“/
"代替。
Mod_jk
已设置并且工作正常。我可以从“/myapp
”访问该应用程序,但我无法完全正常工作。下面是我为 mod_rewrite
准备的配置,用于尝试让它正常工作。它正确地重写了 /static/
url 以让 apache 从解压的 webapp 为它们提供服务,如果我启用重写日志,我看到它确实尝试将所有其他请求传递给 /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]
过去,当我使用 apache 1 完成此操作时,我必须确保 mod_jk
在 mod_rewrite
之前加载,但我似乎无法实现这在 apache 2 下。有什么想法吗?其他人通常怎么做?
最佳答案
最终设法使它正常工作。看来我需要将 JkOption 设置为:
JkOptions +ForwardURICompat
然后 mod_jk
查看重写的 URL。必须承认不能 100% 确定为什么会这样,但我相信它正在恢复到旧的行为形式。如果有人能告诉我更好/更正确的方法,我很想知道。
关于java - 如何通过 mod_rewrite 将请求传递给 mod_jk 并剥离应用程序上下文,让 tomcat 5.5 在 apache 2 后面运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/208261/