先日、Laravel, Dockerで立ち上げたローカル環境(localhost)にアクセスしたところ、502 Bad Gateway
エラーが表示されました。

今回はこの502 Bad Gateway
の解決方法を書いていきます。
目次
結論
まず、結論から言うと、ポートに競合が発生していたため、502 Bad Gateway
エラーが起こっていました。
なので、競合を解消することで502 Bad Gateway
エラーも解消もされました。
localhostで502 Bad Gatewayと表示された時の解決手順
1. Dockerコンテナのログを確認
docker-compose logs
コマンドでログを確認すると、以下のようなエラーが発生していました。
コンテナ名 | 2022/08/04 11:52:20 [error] upstream prematurely closed connection while reading response header from upstream, client: 172.xx.x.1, server: localhost, request: "GET /favicon.ico HTTP/2.0", upstream: "http://192.168.xx.x:9000/favicon.ico", host: "localhost:xxxx", referrer: "https://localhost:xxxx/"
2. ポートの使用状況を確認
エラーを吐いていたDockerコンテナが9000番ポートを使用していたので、下記のコマンドで9000番ポートの使用状況を確認。
$ sudo lsof -P -i:9000
すると以下のようにphp-fpm と Dockerコンテナが9000番ポートで競合していました。
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
com.docke 58425 user_name 693u IPv6 0x1354893be5xx843 0t0 TCP *:9000 (LISTEN)
php-fpm 82467 user_name 8u IPv4 0x13548xxxxxxxc04b 0t0 TCP localhost:9000 (LISTEN)
php-fpm 82468 user_name 9u IPv4 0x13548xxxxxxxc04b 0t0 TCP localhost:9000 (LISTEN)
php-fpm 82469 user_name 9u IPv4 0x13548xxxxxxxc04b 0t0 TCP localhost:9000 (LISTEN)
3. docker-compose.ymlにてポート番号を変更
php-fpmは削除できなかったので、docker-compose.yml
にてポート番号を9001に変更。
ports:
- '9001:80' // 9000を9001に変更
dockerコンテナを削除して、再度立ち上げ。
$ docker-compose down
$ docker-compose up -d
4. 502 Bad Gatewayエラーの解消
dockerコンテナのポート番号を変更したので、再度9000番ポートの使用状況を確認。
$ sudo lsof -P -i:9000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
php-fpm 82467 user_name 8u IPv4 0x13548xxxxxxxc04b 0t0 TCP localhost:9000 (LISTEN)
php-fpm 82468 user_name 9u IPv4 0x13548xxxxxxxc04b 0t0 TCP localhost:9000 (LISTEN)
php-fpm 82469 user_name 9u IPv4 0x13548xxxxxxxc04b 0t0 TCP localhost:9000 (LISTEN)
9001番ポートも確認する。
$ sudo lsof -P -i:9001
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
com.docke 58425 user_name 693u IPv6 0x1354893be5xx843 0t0 TCP *:9001 (LISTEN)
ポートの競合がなくなった。
localhostにアクセスすると502エラーは解消され、無事UIが表示されました。