- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 Tomcat 实例,其中包含许多 Web 应用程序,每个应用程序都可以通过它的/Context 访问。 Tomcat 位于 httpd(实际上是 Debian Apache2)之后,配置有虚拟主机来为每个应用程序/上下文提供服务。 Tomcat 连接是通过 mod_jk 实现的。
当我不关心从 url 中删除上下文时,这工作正常:当请求虚拟域的根时,请求被重定向到 domain.com/Context。
但是对于一个应用程序,我确实想要删除上下文。我相信这可以通过使用 mod_rewrite 并将重写的 url 传递给 mod_jk 以传递到正确的 Tomcat 上下文来完成。所以我的 Debian Apache2 站点可用文件如下所示:
NameVirtualHost *
<VirtualHost *>
ServerName domain.be
DocumentRoot /home/webapp/app/static/domain/
RewriteEngine on
RewriteRule ^/(.*)$ /Context/$1 [L,PT]
RewriteLog "/var/log/apache2/domain-rewrite.log"
RewriteLogLevel 4
JkLogFile /var/log/apache2/domain-mod_jk.log
JkLogLevel debug
JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
JkMount /Context w1
JKMount /Context* w1
JkOptions +ForwardURICompat
ErrorLog /var/log/apache2/domain_error.log
CustomLog /var/log/apache2/domain_access.log combined
LogLevel warn
</VirtualHost>
根据文档,[PT] 标志和 +ForwardURICompat 选项应该导致将重写的 URL 传递给 jk_mod。然而,这似乎并没有发生。
URL 正在重写,但似乎 mod_jk 忽略了它:例如,对 domain.be/Context 的请求被重写为/Context/Context - 但仍作为/Context 传递给 mod_jk。
有什么想法吗?顺便说一下,我现在不能使用 mod_proxy。
谢谢
最佳答案
@Josh,我认为如果 tomcat 执行任何重定向,此解决方案将不起作用。这是典型的情况,例如在要求登录的应用程序中。当用户未通过身份验证时,应用程序将重定向到/login 之类的内容,但是 tomcat 将附加当前上下文,例如/context/login,因此最后上下文确实显示在 URL 中。
正如您在其他问题/回复中提到的,仅使用 mod-jk 和 tomcat 虚拟主机是一种选择,但您需要将应用程序部署为 ROOT.war,这可能不是那么简单。有一个解决方法,因此您的应用程序可以直接放入 tomcat webapps 文件夹中,但正如我所描述的 here服务器将至少部署该应用程序两次。
如果 RewriteRule[P] 加上 JkOptions +ForwardURICompat 可以工作,那会很棒,但事实并非如此。顺便说一句,我已经对此进行了测试并且我知道 mod_proxy 确实有效,因为我将我的网站代理到 cnn.com 并且我在我的网站 URL 下获得了他们的页面。以下是您可以看到正在使用代理的请求的日志顺便说一下:
127.0.0.1 - - [15/Dec/2011:12:56:34 --0500] [localhost/sid#1008ef278][rid#1009980a8/initial] (2) forcing proxy-throughput with http://localhost/nestorurquiza-app/
127.0.0.1 - - [15/Dec/2011:12:56:34 --0500] [localhost/sid#1008ef278][rid#1009980a8/initial] (1) go-ahead with proxy request proxy:http://localhost/nestorurquiza-app/ [OK]
127.0.0.1 - - [15/Dec/2011:12:56:49 --0500] [localhost/sid#1008ef278][rid#1009aaca8/initial] (2) forcing proxy-throughput with http://localhost/nestorurquiza-app/login
127.0.0.1 - - [15/Dec/2011:12:56:49 --0500] [localhost/sid#1008ef278][rid#1009aaca8/initial] (1) go-ahead with proxy request proxy:http://localhost/nestorurquiza-app/login [OK]
127.0.0.1 - - [15/Dec/2011:12:57:15 --0500] [localhost/sid#1008ef278][rid#1009980a8/initial] (2) forcing proxy-throughput with http://localhost/nestorurquiza-app/j_spring_security_check
127.0.0.1 - - [15/Dec/2011:12:57:15 --0500] [localhost/sid#1008ef278][rid#1009980a8/initial] (1) go-ahead with proxy request proxy:http://localhost/nestorurquiza-app/j_spring_security_check [OK]
127.0.0.1 - - [15/Dec/2011:13:08:41 --0500] [localhost/sid#1008ef278][rid#1009980a8/initial] (2) forcing proxy-throughput with http://localhost/nestorurquiza-app/
127.0.0.1 - - [15/Dec/2011:13:08:41 --0500] [localhost/sid#1008ef278][rid#1009980a8/initial] (1) go-ahead with proxy request proxy:http://localhost/nestorurquiza-app/ [OK]
关于apache - 从虚拟主机的 URL 中删除 Tomcat 上下文(mod_jk、mod_rewrite),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2063895/
我正在 Windows 服务器中配置 httpd 以实现负载平衡。配置步骤之一是下载 tomcat connector for windows 并将 mod_jk.so 文件放入 modules 文件
我在 Ubuntu 下工作。 每次我重新启动 apache2 时,它都会告诉我 jk_module 已经加载,所以它会跳过它。 问题:我认为我配置错误,所以我对其进行了更改,但由于未重新加载,因此未进
是否可以在 mod_jk 配置中构建具有多个级别的平衡器树? 例如有如下配置 worker.list=b, b1, b2 worker.t1.port=8001 worker.t1.host=loca
CentOS 6.7 版(最终版) \m 上的内核\r apache-tomcat-7.0.47 jdk1.7.0_45 tomcat-connectors-1.2.41 日志显示 mod_jk 已
除了/myUrl/apple.pdf,我有几个站点需要卸载/myUrl/.*.pdf。我最初写的 JkUnmount /myUrl/.*.pdf worker1 JkMount /myUrl/appl
我使用 Apache/2.2.14 (Worker MPM) + libapache2-mod-jk 1.2.28-2 + tomcat 6.0.24 让我的应用程序在一台机器上与 CGI 和 Jav
我正在运行一个 apache 网络服务器和一个 tomcat 服务器。我现在正试图从 apache 转发到 tomcat。两台服务器都在线并正在运行,并且安装了 mod_jk。但是当我尝试时我不断收到
我尽了一切可能使 Mod_jk 工作但没有成功。我尝试了多个 Apache 下载,尝试了我能找到的所有建议,包括检查特殊字符……Apache 和 Tomcat 都按预期工作,但仍然没有负载平衡,我不断
我正在尝试在 Apache 2.2.3 中配置 mod_jk 以连接 Tomcat 7。操作系统是 CentOS 5 完成所有配置后,在启动 Apache httpd 时我得到了 - Starting
我在 glassfish 服务器 4.1 版上运行 Oracle mapviewer。一直在8080端口运行没有问题,操作系统是Oracle Linux 4.1.12-61.1.22.el6uek.x
我正在使用 Apache 服务器在 Tomcat 7 中进行集群。它也工作正常。但是我有以下问题: 1) 我正在尝试监控 mod_jk 状态页面;但它给出了 404 错误。 2) 在日志中显示以下错误
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 10 年前。 Improve thi
我刚才让 mod-jk 工作,但在切换服务器和修改一些文件后,它不再工作了。我正在使用 mod_jk-1.2.28 和 JBoss 4.2.3 作为后端。 在 JBoss server.xml 文件中
我希望能够转发 url,例如 http://external_url.com/auth => http://internal_url.com:8080/app/auth https://externa
我已经创建了 tomcat 集群,负载平衡由 mod_jk 模块完成。我使用 xampp Apache 作为网络服务器。现在所有请求都直接发送给平衡器。而且我无法访问 htdocs 项目 我需要做的是
我正在同一台服务器上设置两个 Tomcat 实例,前面有一个 Apache mod_jk 负载平衡器。我一直在使用指南和 Apache Tomcat 文档,并坚持使用建议的基本设置。当我尝试启动任何
我添加了以下 mod-jk.conf 文件并将其包含在 httpd.conf 中: LoadModule jk_module modules/mod_jk.so JkWorkersFile conf/
我们已经使用 mod_jk 将 Apache 与 Tomcat 一起运行了大约一个月,现在没有出现任何问题。今天早上,我开始在 mod_jk 日志文件中看到以下错误。 我对使用 mod_jk 还很陌生
我在 Ubuntu 12.10 上运行 Tomcat 并安装了一个网络应用程序。使用 Tomcat (localhost:8080/webappname) 访问时它工作正常。使用此方法对 servle
我正在使用 mod_jk 使 java 网络应用程序可通过 apache 网络服务器访问。我的 vhost.conf 看起来像这样: JkMount /web/* worker1 JkMount /g
我是一名优秀的程序员,十分优秀!