很难理解 tomcat 文档,查看 server.xml 您会发现一堆可能难以理解的端口,因为文档中没有真正正确或广泛地解释它。
例如,配置文件中的这一行 server.xml
<Connector port="8345" protocol="AJP/1.3" redirectPort="9875" />
在这里你可以找到另一个重定向端口:
<Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
Run Code Online (Sandbox Code Playgroud)
我了解连接器端口的作用。在第一种情况下,您使用它在 apache 中创建一个工作程序并将其发送到那里,在第二种情况下,您打开一个端口以直接访问 tomcat。然而,当涉及到重定向端口时,事情就变得模糊了。
下面是 tomcat 文档对 ajp 端口的解释:
如果此连接器支持非 SSL 请求,并且收到匹配需要 SSL 传输的请求,Catalina 将自动将请求重定向到此处指定的端口号。
我总是选择一个超过 1024 的随机重定向端口,它可以工作,
但这什么时候会付诸实践呢?它如何知道请求何时需要 SSL 传输?
我有一个运行 tomcat 模块的卫星服务器。该模块通过将流量从主服务器重定向到带有 apache 的 ajp 连接器而生效,反之亦然。
在主服务器中,https 是在 apache 中强制执行的。这是否意味着所有请求都以加密或纯文本形式发送到卫星服务器?我知道如果我通过端口 8080 访问卫星服务器,它没有被加密,但我想知道这是否也适用于被重定向到主服务器的流量,以及这个重定向端口在哪里生效。
我正在尝试在 Ubuntu 上的 Tomcat7 中设置 Jenkins。我安装了 Tomcat7 并部署了jenkins.war
,现在我在 上看到了 Jenkins 主页http://myhost:8080/jenkins
,但它试图在 上创建 Jenkins 目录/usr/share/tomcat7/.jenkins
,但出于安全原因它不能这样做。我已经创建/srv/jenkins
并授予tomcat7
组权限,并希望设置JENKINS_HOME
为该路径。我试过将它添加到 tomcat 配置中/etc/tomcat7/server.xml
:
<GlobalNamingResources>
<Environment name="JENKINS_HOME" value="/srv/jenkins"
type="java.lang.String" override="false"/>
<!-- Default settings -->
Run Code Online (Sandbox Code Playgroud)
而且我还尝试将它添加到自动创建的上下文文件中ROOT/META-INF/context.xml
($CATALINA_HOME/conf
据我所知没有)。
<Context path="/"
antiResourceLocking="false" >
<Environment name="JENKINS_HOME" value="/srv/jenkins/" type="java.lang.String"/>
</Context>
Run Code Online (Sandbox Code Playgroud)
但即使在重新启动 tomcat7 后,我仍然得到相同的结果(尝试使用/usr/share/tomcat7/.jenkins
)。
JENKINS_HOME
在Tomcat7中我需要在哪里设置环境变量?
我正在为 Tomcat7 使用 NIO/APR 连接器。
例如
<Connector port="8080"
protocol="org.apache.coyote.http11.Http11AprProtocol"
connectionTimeout="3000"
redirectPort="8443"
URIEncoding="UTF-8"
maxPostSize="0"
maxThreads="200"
enableLookups="false"
disableUploadTimeout="false"
maxKeepAliveRequests="-1"
useBodyEncodingForURI="true"
compression="on"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
/>
Run Code Online (Sandbox Code Playgroud)
如何确定适用于 Tomcat 的 NIO/APR 连接器的 maxThreads 的最佳大小?
maxThreads 的一个好的起始值是多少?
我想将端口 8080 更改为默认的 HTTP 端口 (80),以将 Jersey 应用程序用作 HTTP-Restful API。因此,我将端口从 8080 替换为 80(在 内/etc/tomcat7/server.xml
)并将其配置为使用 AUTHBIND ( /etc/defaults/tomcat7
)。重新启动服务后,我在/var/log/tomcat7/catalina.out
.
有人可以翻译这个错误吗?为什么 tomcat 无法创建套接字?
我正在使用 ubuntu 14.04 和 tomcat7。
INFO: Initializing ProtocolHandler ["http-bio-80"]
Jul 25, 2014 4:08:28 AM org.apache.coyote.AbstractProtocol init
SEVERE: Failed to initialize end point associated with ProtocolHandler ["http-bio-80"]
java.net.SocketException: No such file or directory
at java.net.PlainSocketImpl.socketBind(Native Method)
at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:376)
at java.net.ServerSocket.bind(ServerSocket.java:376)
at java.net.ServerSocket.<init>(ServerSocket.java:237)
at java.net.ServerSocket.<init>(ServerSocket.java:181)
at org.apache.tomcat.util.net.DefaultServerSocketFactory.createSocket(DefaultServerSocketFactory.java:49)
at org.apache.tomcat.util.net.JIoEndpoint.bind(JIoEndpoint.java:397)
at org.apache.tomcat.util.net.AbstractEndpoint.init(AbstractEndpoint.java:640)
at org.apache.coyote.AbstractProtocol.init(AbstractProtocol.java:434)
at org.apache.coyote.http11.AbstractHttp11JsseProtocol.init(AbstractHttp11JsseProtocol.java:119)
at org.apache.catalina.connector.Connector.initInternal(Connector.java:978) …
Run Code Online (Sandbox Code Playgroud) 运行红帽 7.4
直到最近我可以使用
semanage fcontext -a -t public_content_rw_t '/var/www(/.*)?'
restorecon -R /var/www
Run Code Online (Sandbox Code Playgroud)
来自回答https://serverfault.com/a/346779/125461 关于如何让 SELinux 允许 Apache 和 Samba 在同一文件夹中?.
但 public_content_rw_t 不再适用于 tomcat (tomcat-7.0.76-2.el7.noarch)
我设法通过使用解决了这个问题
semanage permissive -a tomcat_t
Run Code Online (Sandbox Code Playgroud)
但我正在寻找一个允许 tomcat & httpd 读取和 samba 读取和写入的上下文,或者一个允许 rw to tomcat、httpd & samba 的上下文。
或者,是否可以将 tomcat 使用的上下文更改为 httpd 上下文?
在我们的 linux 机器上,我们有多个运行 tomcat 的用户。
目前我们正在使用 process kill 命令来杀死相应用户的 tomcat ,而不是使用 shutdown.sh
使用这种方法有什么缺点吗?
由于错误 CVE-2020-1938,我们想使用最新的 Tomcat 7.0.100。另请参阅CVE-2020-1938 我们还使用 2.4 版的 Apache 服务器,它通过 AJP 连接到 Tomcat。
最新的 Tomcat 版本需要各种新的安全通信设置,这是我们所做的。不幸的是,我们总是收到 HTTP 错误 403 并且不知道为什么。
在 Apache workers.properties 中,我们有以下设置:
worker.list=okkommwm57f
ps=\
worker.okkommwm57f.type=ajp13
worker.okkommwm57f.host=192.168.181.240
worker.okkommwm57f.secret=123456
worker.okkommwm57f.port=8309
worker.okkommwm57f.socket_keepalive=1
worker.okkommwm57f.connect_timeout=10000
worker.okkommwm57f.prepost_timeout=10000
worker.okkommwm57f.socket_timeout=10
worker.okkommwm57f.connection_pool_timeout=600
Run Code Online (Sandbox Code Playgroud)
AJP 连接器配置如下所示:
<Connector port="8309" protocol="AJP/1.3" redirectPort="8443" secretRequired="true" secret="123456" address="192.168.181.240" />
Run Code Online (Sandbox Code Playgroud)
当我测试站点时,我不断收到 HTTP 错误 403。我尝试了不同的版本,但都无济于事。已经将“secretRequired”设置为“false”。也不行。
也许有人有想法,可以帮我解决问题。谢谢你。
我已经安装了 JDK 7 和 tomcat 7 并设置了以下环境变量:
PATH: ......C:\Progra~1\Java\jdk1.7.0_51;F:\apache-tomcat-7.0.52-windows-x86\apache-tomcat-7.0.52\bin;
CATALINA_HOME: F:\apache-tomcat-7.0.52-windows-x86\apache-tomcat-7.0.52;
JAVA_HOME: C:\Progra~1\Java\jdk1.7.0_51;
JRE_HOME: C:\Progra~1\Java\jre7;
Run Code Online (Sandbox Code Playgroud)
当我尝试运行命令时catalina.bat
,它会引发以下错误:
The CATALINA_HOME environment variable is not defined correctly
This environment variable is needed to run this program.
Run Code Online (Sandbox Code Playgroud)
执行命令时setclasspath.bat
,它抛出以下错误:
The JRE_HOME environment variable is not defined correctly
This environment variable is needed to run this program.
Run Code Online (Sandbox Code Playgroud)
当我尝试执行命令时service.bat
,错误是:
The tomcat7.exe was not found...
The CATALINA_HOME environment variable is not defined correctly.
This environment variable is needed to run this program". …
Run Code Online (Sandbox Code Playgroud) 我在 Ubuntu 14.04 (Java OpenJDK 1.7) 上有一个 Tomcat 7 服务器,它已经运行了一年多,没有任何问题。几个月前,它无法通过 Chrome 访问,我通过切换到 Firefox 来访问这个特定站点来解决这个问题。最近(几天)前,Firefox 无法访问它。
我已经咨询了这个问题,这与我遇到的问题基本相同,但由于某种原因,该解决方案不再有效。截至昨天,Chrome 41 和 Firefox 37 都没有显示我的网站。在 Chrome 上,我收到以下回复:
A secure connection cannot be established because this site uses an unsupported protocol.
Error code: ERR_SSL_VERSION_OR_CIPHER_MISMATCH
Run Code Online (Sandbox Code Playgroud)
在 Firefox 上,我得到了这个:
Cannot communicate securely with peer: no common encryption algorithm(s). (Error code: ssl_error_no_cypher_overlap)
Run Code Online (Sandbox Code Playgroud)
我已经尝试了答案和参考为 Tomcat 7推荐的所有协议组合,但没有骰子。浏览器制造商似乎已经加强了安全性,以至于这些参数不再起作用:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslEnabledProtocols = "TLSv1,TLSv1.1,TLSv1.2" />
Run Code Online (Sandbox Code Playgroud)
我一整天都在尝试不同的参数组合,但没有运气。我还能够在两个不同的 Tomcat 安装(Windows …
我有一个在 Tomcat 6 上的开发服务器。我刚刚安装了 Tomcat 8,并注意到它不再在页面点击时重新编译 JSP。我必须在 server.xml 中更改什么才能让它在页面点击时重新编译它们?
注意:有人指出我http://tomcat.apache.org/tomcat-8.0-doc/config/loader.html但我认为这不能回答这个问题,因为我不关心在下面重新加载 jars 或类文件/WEB-INF/classes/
或者/WEB-INF/lib
,只是重新编译 JSP。
如果由于某种原因这不能在 Tomcat 8 中完成,它可以在 Tomcat 7 中完成吗?