Articles of tomcat

Nginx负载均衡器和Tomcat启动延迟

我使用nginx(centos上的免费版本)作为反向代理负载均衡器到Tomcat 7服务器集群。 除了tomcat启动的时候,它工作的很好。 如果一个Tomcat实例closures,它会正确地故障转移到另一个。 但是,如果Tomcat启动 – 这可能需要60秒 – 它将请求发送到tomcat,但tomcat不响应。 所以用户得到nginx错误页面。 有没有办法让上游负载平衡器确保tomcat正在响应? 谢谢

问题(?)在Apache Tomcat proxy_ajp.conf导致代理失败

我们在我们的proxy_ajp.conf中有类似下面的指令,这会给我们一个404。 SSLProxyEngine On ProxyPass /test https://www.purple.com/test? ProxyPassReverse /test https://www.purple.com/test? 当我们(最后)只删除问号,它的工作。 我找不到任何提及的问号是一个保留的字符或任何东西。 问题是,为什么会发生? 我的猜测是,如果我想包括问号,那就需要逃脱。 我目前没有testing平台(这是我们的产品代理,有问题)。 只是为了好玩(尽pipe这个问题并不重要),最初的意图是在不包含问号的情况下在代码中构build查询,一旦我们发现问题是问号,我们现在将问号放在查询。

Tomcat:logging相当于SSL_CLIENT_S_DN的内容

在Apache HTTPD中,可以创build包含SSL_CLIENT_S_DN值的自定义请求日志。 由于该站点需要相互authentication(客户端证书),因此这为谁正在访问Web服务器提供了良好的审计日志。 问题是我们也有大量的tomcat主机,并希望对tomcat创build的请求日志做同样的事情。 我似乎无法find办法做到这一点。 我已经看了tomcat中的访问阀,但似乎无法find一个合适的variables。 我一直在寻找configuration信息: http : //tomcat.apache.org/tomcat-7.0-doc/config/valve.html#Access_Log_Valve 此外,这些是configuration了clientAuth = True的HTTPS连接器的tomcat实例。 他们不是坐在代理人后面。 如何在请求日志中logging客户端证书DN?

Squidconfiguration允许所有的HTTPS和阻止所有其他的本地主机

我试图使用鱿鱼来嘲笑我的本地Windows机器上的东西进行testing的目的。 我需要允许本地应用程序和浏览器连接到本地主机上运行的一个tomcat服务器,在我的主机文件中使用别名testServer 。 一切都需要能够通过https连接,而不是http,所有的连接来自并保持在我的本地机器上。 因此,例如,我想要允许https://testServer:8443/keepAlive ,而不是http://testServer:8080/keepAlive 。 我可以让鱿鱼来允许或阻止http连接,但不能让它永远不会允许https。 我沿着这些线路尝试了很多东西: #https_port 8443 cert=c:/squid/tomcat_cert.pem defaultsite=testServer acl sites_server_1 dstdomain testServer http_access allow sites_server_1 http_access allow SSL_ports http_access deny !SSL_ports acl SSL_ports port 443 acl SSL_ports port 8443 #Tomcat ssl 我也看着用mod代理来使用apache来做到这一点,而且看起来不是那么直截了当。 但是如果有一个更适合这个的工具,那也是一个很好的答案。 这似乎应该是简单的,但任何帮助,将不胜感激。 编辑:刚刚意识到这里的端口问题,我将需要改变我的应用程序指向的端口,所以我没有代理和tomcat试图在同一台机器上的同一端口上听,所以我也需要configurationsquidredirect该端口。

404在Tomcat经理与AJP连接器

我试图用Apache mod_jk,SSL和AJP连接器在CentOS 6上configurationTomcat 7。 JK模块安装在Apache下: $ sudo httpd -M | grep jk jk_module (shared) Syntax OK Tomcatconfiguration了一个AJP连接器,如下所示: <?xml version='1.0' encoding='utf-8'?> <Server port="8005" shutdown="SHUTDOWN"> <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> <Listener className="org.apache.catalina.core.JasperListener" /> <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" /> <GlobalNamingResources> <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" /> […]

在一个系统上工作的Java Spring应用程序几乎完全相同

介绍 我在RHEL上运行第三方Java Spring应用程序,拒绝在从某个RHEL 6.5模板克隆的计算机上运行。 它只是在启动时死于一个假的例外(见下文)。 有问题的软件版本: RHEL 6.5 Tomcat 7.0.41 (rolled our own, almost vanilla) Spring 3.1.4.RELEASE (shipped with application) java version "1.7.0_65" OpenJDK Runtime Environment (rhel-2.5.1.2.el6_5-x86_64 u65-b17) OpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode) SELinux Status: Permissive 我已经改变了类名来保护无辜,我非常怀疑实际的软件是重要的。 复制tomcat和实例目录从破碎的盒子到我的Linux桌面,并运行它。 虽然我所描述的设置被认为是一个testing环境,但我在我们的产品盒上遇到了这个问题,我不得不从DVD中安装,以使问题消失。 提到的设置是我在傀儡模块开发过程中重新遇到的问题,并设法保存和重现这个问题。 build立 应用程序使用的DB保存在本地(h2),并在tomcat的server.xml中设置。 2个RHEL 6.5模板,都是为stream浪者设置的。 破碎的模板:从DVD直接安装。 设置木偶自动设置模板的手动设置步骤,以及stream浪模板清单步骤。 工作模板:从DVD开始的Kickstart最小化设置,通过Shellscript进行Vagrant / VirtualBox自定义(使用打包packer完成) 每个模板的1个盒子都是通过vagrant设置的,都是从我们的木偶大师那里应用完全相同的木偶目录。 问题 该应用程序在启动时死于破碎的模板,但有以下例外情况: […]

如何保护tomcat应用程序 – 使用fail2ban进行用户身份validation?

AFAIK tomcat6不使用Apache std .htaccess auth,而是拥有自己的用户authentication方法。 我的问题是:如何保护它免受fail2ban蛮力攻击?

Apache2 / tomcat / MySQL / PageSpeed服务器每天挂一次

我的服务器每天至less挂起一次。 它依然如此,直到我重新启动Tomcat。 我不确定哪个部分会导致这个问题,所以我正在尝试几个假设: 我的网站是通过Google的PageSpeed服务的,所以我怀疑我正在遭受DDoS攻击。 当它挂起时,我必须重新启动apache2和tomcat。 所以我不知道是哪一个造成这个问题。 当服务器挂起时,我检查mysql的进程列表,并且发现有十几个空闲连接。 这意味着数据库不会超载。 当服务器挂起时,我看到像这样的一些错误。 所以这可能是这个问题在我的Java代码和MySQL之间的连接: java.sql.SQLException: Operation not allowed after ResultSet closed at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:996) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:935) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:924) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:870) at com.mysql.jdbc.ResultSetImpl.checkClosed(ResultSetImpl.java:734) at com.mysql.jdbc.ResultSetImpl.checkRowPos(ResultSetImpl.java:778) at com.mysql.jdbc.ResultSetImpl.getObject(ResultSetImpl.java:4419) at com.mypackage.SqlUtils.getResultMapList(SqlUtils.java:66) 我从数据库检索结果的集中代码是: public List<ResultMap> getResultMapList(String sql) { List<ResultMap> rows = new LinkedList<>(); try (Connection conn = getConnection(); ResultSet res = conn.createStatement().executeQuery(sql)) { while […]

在tomcat4上禁用SSL3

我有一个使用tomcat4的非常旧的Web应用程序。 B / C的卷毛狗脆弱性我需要禁用SSL3和禁用一堆弱密码。 我的连接器看起来像这样,但显然根据www.ssllabs.com我仍然SSL3启用。 有人可以告诉我什么是错的? 任何有识之士将不胜感激,谢谢! (编辑,所以它出现在页面上,所以有一些字符丢失,但重要的属性在那里) Connector className="org.apache.coyote.tomcat4.CoyoteConnector" port="443" minProcessors="5" maxProcessors="75" enableLookups="true" acceptCount="100" debug="0" scheme="https" secure="true" useURIValidationHack="false" disableUploadTimeout="true" SSLEnabled="true" sslProtocols="TLSv1, TLSv1.1, TLSv1.2" ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_RC4_128_SHA,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,SSL_RSA_WITH_RC4_128_SHA"> Factory className="org.apache.coyote.tomcat4.CoyoteServerSocketFactory" clientAuth="false" protocol="TLS" /> </Connector

如果Root上下文初始化失败,自动停止Tomcat

我似乎无法弄清楚是否可以设置Tomcat停止当ROOT上下文初始化失败。 由于我的Tomcat实例只作为ROOT上下文托pipe一个应用程序,因此如果此Web应用程序的初始化失败,保持Tomcat运行在空闲状态是没有意义的。 我知道这不是最佳的做法,例如基于Spring Boot的微服务架构提供了这种开箱即用的function,但我们现在不能迁移到Spring Boot。 不过,我需要某种自动故障处理,因为我们绑定到Docker图像,如果在容器内发生了致命事件(容器退出),我希望在容器级别上看到它。