我在我的Spring Boot 2项目中添加了一个AJP连接器。
这个很好用。我现在可以通过我的Apache Web服务器访问我的Spring Boot应用程序。但是,如果我运行我的Spring Boot应用程序,我就不能直接访问它了。所以这个URL不再起作用。
@Bean
public ServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory tomcat = new
TomcatServletWebServerFactory() {
@Override
protected void postProcessContext(Context context) {
SecurityConstraint securityConstraint = new SecurityConstraint();
securityConstraint.setUserConstraint("CONFIDENTIAL");
SecurityCollection collection = new SecurityCollection();
collection.addPattern("/*");
securityConstraint.addCollection(collection);
context.addConstraint(securityConstraint);
}
};
tomcat.addAdditionalTomcatConnectors(redirectConnector());
return tomcat;
}
private Connector redirectConnector() {
Connector connector = new Connector("AJP/1.3");
connector.setScheme("http");
connector.setPort(ajpPort);
connector.setSecure(false);
connector.setAllowTrace(false);
return connector;
}
这个很好用。我现在可以通过我的Apache Web服务器访问我的Spring Boot应用程序。但是,如果我运行我的Spring Boot应用程序,我就不能直接访问它了。所以这个URL不再起作用。
http://localhost:13080/online/showlogin?m=test
如果我禁用AJP连接器,URL就会再次起作用。我已经尝试过以下方法。 private Connector redirectConnector2() {
Connector connector = new Connector(TomcatServletWebServerFactory.DEFAULT_PROTOCOL);
connector.setScheme("http");
connector.setPort(13080);
connector.setSecure(false);
connector.setAllowTrace(false);
return connector;
}
...
tomcat.addAdditionalTomcatConnectors(redirectConnector2());
...
但这对我没有帮助。
TomcatServletWebServerFactory
,而是创建一个WebServerFactoryCustomizer<TomcatServletWebServerFactory>
,它将添加 AJP 相关内容。这将在 Spring Boot 的默认配置之外执行。 - M. Deinum