プログラミング

localhostで502 Bad Gatewayと表示された時の解決方法

先日、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が表示されました。

Webエンジニア
タクマ
埼玉県出身の33歳

新卒で入社した専門商社で8年間営業職として勤務

30歳からプログラミングを始め31歳でWebエンジニアに転職成功

受託開発企業での開発を1年弱経験したのち、現在はスタートアップの自社開発企業で開発に従事している
\ Follow me /

COMMENT

メールアドレスが公開されることはありません。

CAPTCHA