質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

解決済

dockerでnginx + php-fpmの502Bad Gatewayエラーが解消できない

butasan
butasan

総合スコア1

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

1回答

0評価

0クリップ

768閲覧

投稿2021/11/18 07:53

編集2021/11/18 09:23

前提・実現したいこと

Docker上でnginx、php-fpm、nextjs、mysql、CentOS、Linuxの環境を作っています。
ポートを変えてステージング環境を作ろうとしていますが、502Bad Gatewayが出て解消できません。
本番環境は問題なく動いており、何が問題か分かりません。
本番とステージングとの差分はポート番号とコンテナ名のみです。
お力添えいただけると助かります。

発生している問題・エラーメッセージ

$docker-compose logs nginx-stg nginx-stg | 2021/11/18 05:40:38 [error] 8#8: *10 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: , server: , request: "GET / HTTP/1.1", upstream: "", host: "localhost:28000" nginx-stg | { "time_local": "18/Nov/2021:05:40:38 +0000", "remote_addr": "", "remote_user": "", "request": "GET / HTTP/1.1", "status": "502", "body_bytes_sent": "150", "request_time": "0.001", "http_referrer": "", "http_user_agent": "curl/7.29.0" }
$ curl http://localhost:28000 <html> <head><title>502 Bad Gateway</title></head> <body> <center><h1>502 Bad Gateway</h1></center> <hr><center>nginx</center> </body> </html>

該当のソースコード

docker-compose.yml

version: "3" services: nginx-stg: image: shin1x1/laravel-nginx118 container_name: nginx-stg ports: # - "8000:80" - "28000:80" volumes: - .:/var/www/html - ./docker/nginx/conf.d:/etc/nginx/conf.d links: - php-stg php-stg: build: ./docker container_name: php-stg volumes: - .:/var/www/html ports: # 本番環境はポート指定なし - "9001:80" depends_on: - db-stg db-stg: image: mysql:8.0 container_name: mysql-stg environment: MYSQL_ROOT_USER: ------- MYSQL_ROOT_PASSWORD: ------- MYSQL_DATABASE: app MYSQL_USER: ------- MYSQL_PASSWORD: ------- TZ: 'Asia/Tokyo' command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci volumes: - ./docker/db/data:/var/lib/mysql - ./docker/db/my.cnf:/etc/mysql/conf.d/my.cnf - ./docker/db/sql:/docker-entrypoint-initdb.d ports: # - 3306:80 - "3307:80" phpmyadmin-stg: image: phpmyadmin/phpmyadmin container_name: phpmyadmin-stg depends_on: - db-stg environment: - PMA_ARBITRARY=1 - PMA_HOSTS=mysql-stg ports: # - "10080:80" - "10081:80" nextjs-stg: container_name: nginx-nextjs-stg build: context: ./docker/images/nextjs-nodejs/ dockerfile: dockerfile ports: # - "8080:80" # - "80:3001" - "3010:3000" volumes: - ./nextjs:/usr/share/nextjs command: bash -c "npm --prefix /usr/share/nextjs run start /usr/share/nextjs"

Dockerfile

FROM php:7.4.0-fpm COPY --from=composer:latest /usr/bin/composer /usr/bin/composer RUN apt-get update && apt-get install -y \ git \ && docker-php-ext-install pdo_mysql

default.conf

server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; root /var/www/html/public; index index.php index.html index.htm; charset utf-8; location ~ .(js|css|png|jpg|gif|swf|ico|pdf|mov|fla|zip|rar|svg|mp3)$ { try_files $uri =404; } location / { try_files $uri $uri/ /index.php$is_args$args; } location ~ .php$ { # fastcgi_pass php:9000; fastcgi_pass php-stg:9001; fastcgi_index index.php; fastcgi_buffers 16 16k; fastcgi_buffer_size 32k; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
$ docker-compose ps Name Command State Ports ------------------------------------------------------------------------------------------------------------------- mysql-stg docker-entrypoint.sh mysql ... Up 3306/tcp, 33060/tcp, 0.0.0.0:3307->80/tcp nginx-nextjs-stg /docker-entrypoint.sh bash ... Up 0.0.0.0:3010->3000/tcp, 80/tcp nginx-stg nginx -g daemon off; Up 0.0.0.0:28000->80/tcp php-stg docker-php-entrypoint php-fpm Up 0.0.0.0:9001->80/tcp, 9000/tcp phpmyadmin-stg /docker-entrypoint.sh apac ... Up 0.0.0.0:10081->80/tcp

試したこと

default.conf

  • php-stg:をポート番号に変更。→同様のエラー
  • listen 80listen 28000に変更。→curlを投げると下記エラーになる。

(56) Recv failure: 接続が相手からリセットされました

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

nginx

nginixは軽量で高性能なwebサーバーの1つです。BSD-likeライセンスのもとリリースされており、あわせてHTTPサーバ、リバースプロキシ、メールプロキシの機能も備えています。MacOSX、Windows、Linux、上で動作します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです