pri*_*hor 2 apache tomcat ajp proxypass
我通常在 Tomcat 服务器中部署 Java Web 应用程序,并使用 proxy_ajp 通过 Apache 代理访问它们。问题是,在我的最新设置(基本相同)中,我发现我在所有请求中获得的状态代码都是重复的(即“状态代码:200 200”)。我在每个浏览器、Postman 以及我可能得到的任何状态代码中都得到了这个,一切似乎都工作正常,但我担心我的设置可能不是最佳的。
虽然我找不到解决方案,但我已将问题范围缩小到ajp_proxy,就好像我改变了一样
ProxyPass / ajp://localhost:8009/
ProxyPassReverse / ajp://localhost:8009/
Run Code Online (Sandbox Code Playgroud)
和:
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,我的请求只得到一个状态代码。
我已经搜索过这个问题,但没有发现任何与之相关的内容,因此我们将非常感谢任何信息。
服务器信息:
提前致谢。
小智 5
这不是任何客户端软件的问题,而是 Tomcat 中包含的针对 2008 年特定 AJP 问题的解决方法的结果:Tomcat Issue Tracker #45026
这里可以看到org.apache.coyote.ajp.AjpProcessor (Github)对应的代码片段:
if (sendReasonPhrase) {
/* ... */
if (message == null) {
// mod_jk + httpd 2.x fails with a null status message - bug 45026
message = Integer.toString(response.getStatus());
}
tmpMB.setString(message);
} else {
// Reason phrase is optional but mod_jk + httpd 2.x fails with a null
// reason phrase - bug 45026
tmpMB.setString(Integer.toString(response.getStatus()));
}
Run Code Online (Sandbox Code Playgroud)
最后,这意味着每个基于 AJP 的响应将始终传递一个 HTTP 状态原因短语 - 至少以状态号作为内容。
这准确地解释了您在两个场景中观察到的行为ProxyPass。
我建议只要您使用 Tomcat 8.5,就可以通过AJP 连接器sendReasonPhrase中的属性发送原因短语。
HTTP 连接器也存在此属性。;-)
| 归档时间: |
|
| 查看次数: |
3167 次 |
| 最近记录: |