ちょっと古いサイトを見て設定したらTomcatを9.0.34で追加されたSecretに
手順が対応していなくて起動しなかったのでメモ。
Caused by: java.lang.IllegalArgumentException: The AJP Connector is configured with secretRequired="true" but the secret attribute is either null or "". This combination is not valid.
secretRequiredはデフォルトtrueになっているが、今回Apacheとはlocalhost通信するのでsetSecretRequired(false)
してsecretを使わない設定に変えると起動するようになる。
@Bean
public WebServerFactoryCustomizer<TomcatServletWebServerFactory> servletContainer() {
Connector connector = new Connector("org.apache.coyote.ajp.AjpNio2Protocol");
connector.setPort(8009);
AjpNio2Protocol protocol = (AjpNio2Protocol) connector.getProtocolHandler();
protocol.setSecretRequired(false); // secretを使わない
return factory -> factory.addAdditionalTomcatConnectors(connector);
}
Secretを使いたい場合はTomcat側をsetSecret
すると
protocol.setSecret("mysecret");
Apache側の設定にも同じsecretを設定しないと接続できなくなり、よりセキュアになる。
ProxyPass / ajp://host.docker.internal:8009/ secret=mysecret