3
0

More than 5 years have passed since last update.

DockerCompose+nginx+spring-bootで400BadRequest

Posted at

DockerCompose+nginx+spring-bootで400BadRequest

DockerComposeでnginxとspring-bootを同時に建てて、
nginxをリバプロとして利用しようとしたら、400BadRequestを食らってしまったので備忘も兼ねてメモ。

原因

nginxからspring-bootに流す際にホスト名としてコンテナ名を利用していたため。
DockerComposeでコンテナを起動すると、
{プロジェクト名}_{サービス名}_{連番}という法則でコンテナ名が付き、
同一DockerComposeで立てられたコンテナ同士はこのコンテナ名をホストとしてお互いに通信できます。

が、このホスト名でSpringBootにSpringBootに対してリクエストを投げると、
以下のエラーが出て400が帰ってしまいます。

java.lang.IllegalArgumentException: The character [_] is never valid in a domain name.

Tomcat8.5以降のバージョンではhost名制限が厳格になっており、_を含むホスト名は400で弾かれてしまうようです。
なお、設定等で対応できないのでどうしても使いたかったらTomcatやSpringBootをダウングレードするしかないとのこと。
参考:
https://stackoverflow.com/questions/53504857/the-character-is-never-valid-in-a-domain-name

対応

DockerComposeで立てられたコンテナ間は、docker-compose.ymlで指定したサービス名でも名前解決できます。
こちらを使えば_なしのホスト名に出来るので問題なく通信ができます。

3
0
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
3
0