我是一个新技术人员.我的问题是,我有在tomcat7上运行的Web应用程序.现在我想在Windows服务器上安装和配置mod_jk以连接apache和tomcat.
请告诉我,怎么做?
谢谢
我有一个Apache和Tomcat运行,我mod_jk用来绑定它们.我有一个名为"tc1"的Tomcat工作者,以及我的以下设置VirtualHost:
JkMount /* tc1
JkUnMount /*.png tc1
JkUnMount /*.gif tc1
JkUnMount /*.css tc1
JkUnMount /*.js tc1
Run Code Online (Sandbox Code Playgroud)
这样Tomcat就可以为静态文件提供所有请求.
现在我想使用mod_rewrite并做一些非常简单的事情,例如:
RewriteEngine On
RewriteRule ^/foo$ /bar [L]
Run Code Online (Sandbox Code Playgroud)
将"/ foo"处的动态网页浏览重写为"/ bar",但它不起作用,因为处理的所有网址mod_rewrite都不会结束mod_jk.
我已经阅读了Apache Tomcat Connector文档并尝试了所有JkOptions但没有改变.
有谁知道如何解决这个问题?
是否mod_jk和mod_rewrite加载顺序和声明订货发挥URL处理任何作用?
谢谢
我有一个包含许多webapp的Tomcat实例,每个都可以通过它的/ Context访问.Tomcat是httpd(实际上是Debian Apache2)的后面,配置了虚拟主机来为每个app/Context提供服务.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>
Run Code Online (Sandbox Code Playgroud)
根据文档,[PT]标志和+ ForwardURICompat选项应该导致重写的URL传递给jk_mod.然而,这似乎并没有发生.
正在重写URL,但似乎mod_jk忽略了它:例如,对domain.be/Context的请求被重写为/ Context/Context - 但仍然作为/ Context传递给mod_jk.
有任何想法吗?顺便说一下,我现在不能使用mod_proxy.
谢谢
我在2台服务器上安装了带有mod_jk的Apache + Tomcat.每个服务器都有自己的Apache + Tomcat对,每个请求由2台服务器上的Tomcat负载平衡工作者提供服务.
我有一个关于如何设置Apache maxClient和Tomcat的问题maxThread.
默认数字是,
Apache: maxClient=150, Tomcat: maxThread=200
在这种配置中,如果我们只有1个服务器设置,那么它可以正常工作,因为Tomcat工作者永远不会一次接收超过150个的传入连接.但是,如果我们在两台服务器之间进行负载平衡,那么Tomcat工作者是否可能收到150 +(来自另一台服务器的某些数字)并使maxThread溢出为SEVERE: All threads (200) are currently busy?
如果是这样,我应该maxThread=300在这种情况下设置Tomcat 吗?
谢谢
我已经通过互联网和stackoverflow进行了扫描,但我仍然不确定proxypass和proxypassreverse的目的。
为什么我们需要proxypass(而不是使用mod_jk)让apache服务器连接到tomcat?
请问有人吗?
我按照native目录中的BUILDING.txt中的说明进行操作
./configure --with-apxs=/usr/sbin/apxs
Run Code Online (Sandbox Code Playgroud)
这是一些输出
building connector for "apache-2.0"
checking for gcc... /Applications/Xcode.app/Contents/Developer/Toolchains/OSX10.8.xctoolchain/usr/bin/cc
checking for C compiler default output file name... configure: error: C compiler cannot create executables
See `config.log' for more details.
Run Code Online (Sandbox Code Playgroud)
当然,我搜索StackOverflow寻求解决方案,因为gcc不在/usr/bin.所以我打开了XCode并安装了命令行工具.GCC现在在/ usr/bin ...但我一直得到同样的错误.
有任何想法吗?
解压 tomcat.apache.org 上提供的 tomcat9 软件包后,将 mod_jk 配置为:
workers.tomcat_home=/opt/apache-tomcat-9.0.34
workers.java_home=/opt/jdk-13
ps=/
worker.list=ajp13_worker
worker.ajp13_worker.port=8009
worker.ajp13_worker.host=localhost
worker.ajp13_worker.type=ajp13
Run Code Online (Sandbox Code Playgroud)
当我将 WAR 部署到 webapps 目录并尝试访问它时,浏览器显示以下错误:
在 mod_jk 日志中,我得到了这个:
[Sat Apr 25 08:45:49.187 2020] [16060:139700132441152] [info] jk_open_socket::jk_connect.c (816): connect to 127.0.0.1:8009 failed (errno=111)
[Sat Apr 25 08:45:49.187 2020] [16060:139700132441152] [info] ajp_connect_to_endpoint::jk_ajp_common.c (1065): (ajp13_worker) Failed opening socket to (127.0.0.1:8009) (errno=111)
[Sat Apr 25 08:45:49.187 2020] [16060:139700132441152] [error] ajp_send_request::jk_ajp_common.c (1725): (ajp13_worker) connecting to backend failed. Tomcat is probably not started or is listening on the wrong port (errno=111)
[Sat …Run Code Online (Sandbox Code Playgroud) 我有一个与mod_jk集成的apache tomcat服务器.我在我想要限制的目录中创建了.htaccess文件.但问题是.htaccess正在apache服务目录中工作,但不在tomcat服务的目录中.
Apache文档根目录是/ var/ww/html我在它下面创建了一个测试目录,它的工作正常.
但是在/usr/local/src/apache-tomcat-6.0.35/webapps/examples中我创建了一个.htaccess并且它无法正常工作.
可能是什么原因?
最近,我们面临着一个严重的问题,即向一个用户提供了另一个用户的数据。这个问题几乎不可能重现。
我们使用的是Spring-security提供的标准登录用户管理,我们确信问题不在于将用户存储在应用程序中的实例变量或类似的并发内容中。
我们真的怀疑问题出在SpringSecurity还是Tomcat本身。
我们的前服务器是apache httpd,通过ajp连接器(mod_jk)连接到tomcat。我们没有进行任何负载平衡(httpd只关心SSL,一些URL重写和提供一些php模块)
这是我们的设置:
## OS
OS Name: Linux
OS Version: 2.6.32-5-686
Architecture: i386
## Apache httpd
Server version: Apache/2.2.16 (Debian)
Server built: Sep 4 2011 20:27:42
## mod_jk
mod_jk/1.2.30 (installed via apt-get)
## JVM
JVM Version: 1.6.0_18-b18
JVM Vendor: Sun Microsystems Inc.
## Tomcat
Server version: Apache Tomcat/6.0.28
Server built: February 12 2011 1443
Run Code Online (Sandbox Code Playgroud)
我们将此会话归咎于httpd / mod_jk,所以我们唯一的解决方案是删除apache httpd。但是在我们离开这种流行且广泛使用的配置之前,我们想知道是否有人遇到过类似的问题。
我发现的唯一类似问题是负载平衡或mod_jk。
您是否曾经遇到过类似的问题?任何提示,想法,链接或经验将不胜感激。谢谢!
有很多文档说明你应该使用各种其他东西(包括简单的代理),但AJP是灵活和快速的,它真的帮助我集成我们的SAML2 SSO,而没有任何webapps不必担心任何这些.
我现在正试图让spring-boot应用程序以相同的方式工作并且有一个非常糟糕的时间.主要症状是"Bad Gateway",错误消息如下:
[error] ajp_get_reply :: jk_ajp_common.c(2126):( boot_worker_1)Tomcat已关闭或拒绝连接.尚未向客户发送任何回复(尚未)
[info] ajp_service :: jk_ajp_common.c(2623):( boot_worker_1)发送请求给tomcat失败(可恢复),因为协议错误(attempt = 1)
[error] ajp_connection_tcp_get_message :: jk_ajp_common.c(1289):错误的消息格式0x4854来自127.0.0.1:8092
最后一个似乎是一个线索,但我一直无法找到它.
春季启动手册似乎表明,如果你只有一个连接,你可以在application.properties中设置它 - 这是我理想的做法,但我还没有找到任何这方面的例子.但是从分发的角度来看,这似乎是理想的 - 发布一个jar,为用户提供一个记录的属性文件.
由于这不起作用,我尝试以这样的方式编程:
@Bean
public EmbeddedServletContainerFactory servletContainer() {
TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory();
Connector ajpConnector = new Connector();
ajpConnector.setProtocol("AJP/1.3");
ajpConnector.setPort(8092);
ajpConnector.setSecure(false);
ajpConnector.setAllowTrace(false);
ajpConnector.setScheme("http");
tomcat.addAdditionalTomcatConnectors(ajpConnector);
return tomcat;
}
Run Code Online (Sandbox Code Playgroud)
(我真的不愿意为本地主机连接配置SSL,因为它只会使事情变得复杂,一旦你花费时间在动物园管理员,卡夫卡等不安全的世界中,你会在一段时间之后放弃并想象你的无论如何,ESB是RFC1918和防火墙.
我的问题是:
1)这一切都可以通过属性文件完成,以及如何完成?
2)使用上面的硬编码配置,我可以telnet到端口8092并发出GET请求...我不知道为什么我可以这样做,因为这些GET是http,我已经将协议配置为AJP/1.3所以我不认为它应该工作.但这是Apache的问题吗?我找不到"错误的消息格式0x4854"或错误"-11"的任何解释.
- 克里斯