Articles of tomcat

mod_jk与tomcat失去连接

我正在apache web服务器后面运行Apache Tomcat + mod_jk 1.2.40。 从tomcat启动以来,一切都已经设置并正常工作了一段时间(可测量天/星期)。 然后发生什么事情,mod_jk失去与tomcat的连接。 除了发生的事情(实际上我不知道发生了什么,我正在排除故障),我正在寻找一些关于jk和tomcat之间的连接丢失的原因的支持。 下面是连接失败问题周围的部分mod_jk日志: [Wed Dec 10 09:28:21 2014] [26331:140365639858112] [info] init_jk::mod_jk.c (3383): mod_jk/1.2.40 initialized [Wed Dec 10 09:28:37 2014] [12546:140365639858112] [info] ajp_send_request::jk_ajp_common.c (1652): (workerName) all endpoints are disconnected, detected by connect check (1), cping (0), send (0) … [Wed Dec 10 09:28:49 2014] [26331:140365639858112] [info] init_jk::mod_jk.c (3383): mod_jk/1.2.40 […]

Nginx和Tomcat反向代理不工作

在Cent OS上configurationNginx和Tomcat服务器时遇到问题。 这里是nginx.conf : server { listen 80; server_name subdomain.test.com; root /usr/local/tomcat/webapps/webapp_folder; index index.html index.htm index.jsp; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; location ~ \.jsp { proxy_pass http://127.0.0.1:8080; } } 当我访问subdomain.test.com时 ,我会得到一个下载对话框而不是index.jsp的内容。 另外,我可以通过访问ip_address:8080 / webapp_folder来访问网站。 我也尝试将URL http://127.0.0.1:8080更改为http://127.0.0.1:8080/webapp_folder ,但是当我启动Nginx时,出现以下错误消息: 重新启动nginx守护进程:nginxnginx:[emerg]“proxy_pass”不能在正则expression式给出的位置,或命名的位置内,或者if语句内,或者在/etc/nginx/nginx.conf中的“limit_except” :145 我也试过这个: server { listen 80; server_name subdomain.test.com; root /usr/local/tomcat/webapps/webapp_folder; index index.html index.htm […]

IIS反向代理到Tomcat大写path

我们有一个Tomcat 7在8080端口上的应用程序。我们希望用户使用SSL。 所以我们使用IIS 8作为反向代理来代理从端口443到端口8080的连接。 这就是我们试图实现的: https ://app.example.com ==> app.example.com:8080 / AppName / 以下是URL重写规则 <rule name="Tomcat Reverse Proxy" enabled="true" stopProcessing="true"> <match url="(.*)" ignoreCase="false"/> <action type="Rewrite" url="http://localhost:8080/AppName/{R:1}" logRewrittenUrl="true" /> </rule> 当执行这个规则而不是代理请求时,IIS做了一个redirect,我在浏览器的地址栏中看到http:// localhost:8080 / AppName / 。 问题是AppName 。 IIS URL重写模块不喜欢操作中的大写字母。 但是,Tomcat 7是URL区分大小写的,如果我在重写规则中使用“appname”,Tomcat会抛出一个404。 有没有什么办法可以让IIS在重写中使用大写的url?

没有上下文的Apache反向代理上下文到Tomcat

我有一个Apache实例和两个Tomcat实例。 Apache公开面对https:// public_url / app1和https:// public_url / app2,并且应该将每个上下文传递给相应的Tomcat实例。 其中一个Tomcat实例没有上下文,即https:// ip_address:port ,我无法使用AJP13或HTTP / S正确代理stream量。 <Location /app1> ProxyPass ajp://127.0.0.1:8009/app1 nocanon ProxyPassReverse ajp://127.0.0.1:8009/app1 </Location> <Location /app2> ProxyPass ajp://127.0.0.2:8009/ nocanon ProxyPassReverse ajp://127.0.0.2:8009/ </Location> 在上面的例子中,app1可以工作,但是app2并没有放弃app2的公共上下文,也就是直接访问后端会得到https:// url / login / login ,所以我想它应该显示为https:// public_url / app2 /login/login,而不是在https:// public_url /login/login 404 我试图用mod_jkreplace上面的app2规则,它支持更复杂的场景,但没有更好的成功。 worker.list=app2_ajp worker.app2_ajp.port=8009 worker.app2_ajp.host=127.0.0.2 worker.app2_ajp.type=ajp13 LoadModule jk_module modules/mod_jk.so JKWorkersFile /etc/httpd/conf.d/workers.properties JkLogFile /var/log/httpd/mod_jk_log […]

在Tomcat中禁用SSLv3,但仍显示POODLE漏洞

我有一个Windows 2008服务器与Tomcat 7.0.59&Java 8u31&我试图确保SSLv3被禁用。 查看Java的更改日志,应该不再支持SSL3,并且Java控制面板甚至没有checkbox可以在“高级安全设置”选项中启用它。 即使如此,我已经将sslEnabledProtocols="TLSv1,TLSv1.1,TLSv1.2"到server.xml中的HTTP连接器。 运行POODLE漏洞扫描仍然显示通过SSL3连接的能力。 任何其他地方的想法或工具,可以帮助确定什么是启用/支持SSL3在这个盒子? 以下是完整的连接器configuration供参考: <Connector port="443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keyAlias="CAS-server" sslEnabledProtocols="TLSv1,TLSv1.1,TLSv1.2" keystoreFile="[filepath]" keystorePass="[password]"/> 服务器是在VMWare上运行的虚拟机,仅用于CAS(JA-SIG的Single Sign-On实现)。 系统上安装的其他程序: EMC NetWorker Sophos防病毒/自动更新/远程pipe理系统 TortoiseSVN的

Php负载平衡的问题

我有一个自定义的书面电子商务应用程序运行在它自己的专用服务器上。 它所有的常量(如数据库连接,文件path等)都在一个_constants.php文件中定义。 整个代码由svn跟踪。 (期望为常量文件) 现在我们在成长。 我正在转移到一个3服务器负载平衡的Apache系统,一个专用的MySQL服务器和一个专用的“共享”服务器。 共享服务器是从每个负载平衡服务器符号链接的。 lb1是master,它被设置为每隔1分钟将public_html目录同步到其他服务器。 现在我正面临将应用程序移动到新服务器设置的任务。 问题: 文件path常量。 每个负载平衡服务器都有一个不同的文件path,它是public_html文件夹。 我在这里做什么? 我只是结帐到lb1的代码,并把常量文件夹public_html之外? 我是否重写了常量文件夹,以便能够找出它的path? 我将所有“共享”文件移动到共享服务器,如图像,JavaScript,CSS等。然后,我将改变path引用他们在常量文件。 但是,包括这些共享文件在内的整套代码都包含在一个svn仓库中。 我想我只是检查共享服务器上的整个代码库,即使只有被访问的文件是图像,js和css。 同样的事情在lb1上。 检查整个代码库,甚至认为它不会从该位置加载graphics,CSS,GFX。 使其更容易。 我知道我在浪费硬盘空间,但这样我就不需要维护单独的svn回购。 我做错了吗? 还有其他更好的方法吗? 我有一个运行solr的tomcat服务器。 我的主机告诉我,他们已经运行在lb1上,并且每隔1分钟设置一次rsync整个tomcat文件夹。 这应该是好的吗? 我有一个工作人员的pipe理界面。 他们login改变产品,处理各种事物。 我应该为他们设置一个子域,总是指向lb1来完成他们的工作吗? 我打算让所有的日志文件指向共享。 这听起来不错吗? 克伦工作。 我有一个主要的cron工作。 它运行符合数据库和日志文件的代码。 我想我只会在共享服务器上运行这个,这也是我在共享服务器上拥有完整代码库的另一个很好的理由。 这听起来怎么样? 还有什么是我应该知道的其他“最佳实践”。 如果有更好的地方提出这个问题,请让我知道。 提前致谢。

通过IIS ARR反向代理区分tomcat应用程序响应重写的被调用的URL

嗨到社区在Serverfault! 在尝试configurationIIS以在同一台计算机上的两个Tomcat服务器上打开相应的pipe理器APP时遇到问题。 当我直接通过http://servername:8081/manager和http://servername:8080/manager (另一个Tomcat)调用站点时,一切工作正常。 当我尝试将请求redirect到http://servername/manager7到第一个Tomcat和http://servername/manager8到第二个服务器时,恶梦开始了。 HTML Resonse中的链接总是包含/ manager7 / …即使我调用URL http://servername/manager8 。 以下是我的重写规则。 我把它们设置在服务器级别。 <rewrite> <globalRules> <clear /> <rule name="Tomcat7" enabled="true" patternSyntax="Wildcard" stopProcessing="true"> <match url="*7*" /> <conditions logicalGrouping="MatchAll" trackAllCaptures="false" /> <action type="Rewrite" url="http://wwwts02:8081/{R:1}{R:2}" /> </rule> <rule name="Tomcat8" enabled="true" patternSyntax="Wildcard" stopProcessing="true"> <match url="*8*" /> <conditions logicalGrouping="MatchAll" trackAllCaptures="false" /> <action type="Rewrite" url="http://wwwts02:8080/{R:1}{R:2}" /> </rule> </globalRules> <outboundRules> <clear […]

为什么CATALINA_OPTS参数在运行tomcat的java进程中出现,尽pipe它是一个环境variables

我在Python中通过这个命令运行tomcat进程: os.execve(cmd, [cmd, "run"], env) envvariables设置CATALINA_OPTS = -server -Xms512m -Xmx512m -Xss512k现在当我运行下面的java脚本的脚本时,在ps输出中显示: java -server -Xms512m -Xmx512m -Xss512k org.apache.catalina.startup.Bootstrap start 我的问题是,即使CATALINA_OPTS是一个环境variables,为什么CATALINA_OPTS出现在java进程的ps输出中?

如何在Docker容器中使用伪时间启动tomcat?

我使用docker在tomcat中部署Java Web应用程序。 出于testing目的,我想强制系统date到一个特定的值。 使用Docker不可能在不影响主机date的情况下更改容器date。 所以我想用Faketime 。 这个工具允许操纵给定命令的系统date。 例如 : $ date Web Jul 1 09:57:51 UTC 2015 $ faketime "2008-12-24" date Web Dec 24 00:00:00 UTC 2008 当我使用它启动tomcat时,我得到了一个sem_open错误: $ faketime "2008-12-24" /bin/bash -c "/opt/tomcat/bin/catalina.sh start" […] Tomcat started. $ tail -f /opt/tomcat/logs/catalina.out sem_open: No such file or directory 任何想法来解决这个问题?

在Tomcat 8中设置'tomcat'非root用户

我在Debian 8中安装了Tomcat 8,我需要加强web服务器。 我遵循官方的Tomcat文档指南,在安全考虑部分build议创build另一个用户(名为tomcat)并启动Tomcat进程: Tomcat不应该在root用户下运行。 为Tomcat进程创build一个专用用户,并为该用户提供操作系统所需的最低权限。 例如,使用Tomcat用户不应该可以远程login。 我已经按照指南的build议创build了tomcat用户和组。 我使用以下configuration创build了/etc/systemd/system/tomcat.service文件: [Unit] Description=Apache Tomcat Web Application Container After=network.target [Service] Type=forking #ExecStart=/opt/tomcat/bin/startup.sh ExecStart=/usr/share/tomcat8/bin/startup.sh #ExecStop=/opt/tomcat/bin/shutdown.sh ExecStart=/usr/share/tomcat8/bin/shutdown.sh User=tomcat Group=tomcat [Install] WantedBy=multi-user.target 我做了一个软链接: root@pc:/lib/systemd/system# ln -s tomcat.service /etc/systemd/system/tomcat.service 我在systemd中启用了服务: root@pc:/lib/systemd/system# systemctl enable tomcat.service Created symlink from /etc/systemd/system/multi-user.target.wants/tomcat.service to /lib/systemd/system/tomcat.service. 现在,当我检查tomcat进程是否正在运行时,我找不到tomcat用户作为进程的所有者: tomcat@labnet:/lib/systemd/system$ ps -aux | grep tomcat tomcat8 18116 1.2 8.0 1662560 […]