LoginSignup
2
1

More than 1 year has passed since last update.

Spring BootとApacheをAJPで接続する(secretRequired対応版)

Posted at

ちょっと古いサイトを見て設定したら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
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1