当前位置: 首页 > 知识库问答 >
问题:

Apache无法连接到新的tomcat 9 ajp

海信鸥
2023-03-14

在将Spring Boot的版本从2.1.4升级到2.3.2之后,我的apache2再也无法(通过ajp)连接到Spring Boot的嵌入式tomcat

它显示了以下错误:

[proxy:error] [pid xxxx ] (111)Connection refused: AH00957: AJP: attempt to connect to 10.0.75.1:8500 (10.0.75.1) failed
[proxy_ajp:error] [pid xxxx ] [client xxx ] AH00896: failed to make connection to backend: 10.0.75.1, referer: http://myapp.develop/home/

设置为将请求重定向到两个应用程序的前置apache2服务器(在docker容器上):

<VirtualHost *:80>
ServerName myapp.develop

ProxyPass "/home" "http://10.0.75.1:4200/home"
ProxyPassReverse "/home" "http://10.0.75.1:4200/home"

ProxyPass "/backend" "ajp://10.0.75.1:8500/backend"
ProxyPassReverse "/backend" "ajp://10.0.75.1:8500/backend"

我通过我的/etc/hosts:myapp.development上的域名访问我的web应用程序

这是我的spring boot Tomcat的配置

   Connector connector = new Connector("AJP/1.3");
   connector.setScheme("http");
   connector.setPort(8500);
   connector.setSecure(false);
   connector.setAllowTrace(false);
   ((AbstractAjpProtocol) connector.getProtocolHandler()).setSecretRequired(false);
tomcat.ajp.port=8500
tomcat.ajp.remoteauthentication=false
tomcat.ajp.enabled=true
o.s.b.w.e.t.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http) 8500 (http)
o.a.c.h.Http11NioProtocol    : Initializing ProtocolHandler ["http-nio-8080"]
o.a.c.a.AjpNioProtocol       : Initializing ProtocolHandler ["ajp-nio-127.0.0.1-8500"]
o.a.c.c.StandardService      : Starting service [Tomcat]
o.a.c.c.StandardEngine       : Starting Servlet engine: [Apache Tomcat/9.0.37]
  • 在8.5.51以后,AJP连接器的默认侦听地址更改为环回地址,而不是所有地址。

是什么导致我这个问题,但我不知道如何解决它。

共有1个答案

沈实
2023-03-14

我在升级tomcat版本时也遇到了类似的问题。在ajp连接器中添加下面提到的属性对我的情况有帮助。

connector.setProperty("address","0.0.0.0");
connector.setProperty("allowedRequestAttributesPattern",".*");
((AbstractAjpProtocol)connector.getProtocolHandler()).setSecretRequired(false);

详细解释:

对你的怀疑:

connector.setProperty("address","0.0.0.0"); // OR connector.setProperty("address","::");
connector.setProperty("allowedRequestAttributesPattern",".*"); 
((AbstractAjpProtocol)connector.getProtocolHandler()).setSecretRequired(false);

使用AJP协议需要额外的安全考虑,因为它允许比HTTP连接器更直接地操作Tomcat的内部数据结构。应该特别注意用于address、secret、secretRequired和allowedRequestAttributesPattern属性的值。

 类似资料:
  • 我正在尝试在CentOS系统上运行Apache NiFi。我下载了它并使用以下命令运行它: 结果如下: 然后,我用命令检查Apache NiFi的状态: 结果是: 但最后当我尝试访问http://localhost:8090/nifi或http://localhost:8080/nifi在我的浏览器上显示:无法连接。(我将http端口更改为8090以避免冲突,但仍然存在相同的问题)。请帮帮我,有什

  • 我尝试了kafka-console-consumer.sh和kafka-console-producer.sh,它工作得很好。我能够看到生产者在消费者中发送的消息 1)我已经下载了s3连接器(https://docs.confluent.io/current/connect/kafka-connect-S3/index.html) 2)将文件解压缩到/home/ec2-user/plugins/

  • 该应用程序有一个类,使用以下行创建上下文 其中这个IP是火花工作的机器的IP。

  • 问题内容: 我正在尝试使用Ruby on Rails运行Selenium的示例脚本。我必须使用代理运行它。这是我的代码: 我收到以下错误: 有人能帮我吗…?我已经尝试了好几个小时,却找不到问题…真的不知道该怎么办。 环境: Ubuntu 16.04 LTS,Firefox 45.0,rbenv 2.3.1 另一个问题:有人知道Selenium + Ruby on Rails的示例吗?我找不到真正好

  • 我正在尝试连接到MySQL服务器,但出现无法处理的错误。 java.sql.SQLNonTransientConnectionException:无法创建到数据库服务器的连接。尝试重新连接3次。放弃。com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:110)com.mysql.cj.jdbc.excepti

  • 我真的想不通为什么我不能用下面的代码连接到我的Django项目内的JQuery。你能告诉我是什么原因吗?多谢! null null