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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Amazon RDS

Amazon RDSは、米アマゾン社が提供しているRDBMSサービス。クラウド上でのリレーショナルデータベースの構築および運用が可能です。MySQL/PostgreSQL/Oracle/SQL Serverのインストールを容易にすることができます。

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

nginx

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

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

Q&A

0回答

2161閲覧

Nginxが【502 Bad Gateway】になったりならなかったりする理由を教えて下さい。

nre

総合スコア35

Amazon RDS

Amazon RDSは、米アマゾン社が提供しているRDBMSサービス。クラウド上でのリレーショナルデータベースの構築および運用が可能です。MySQL/PostgreSQL/Oracle/SQL Serverのインストールを容易にすることができます。

Django

DjangoはPythonで書かれた、オープンソースウェブアプリケーションのフレームワークです。複雑なデータベースを扱うウェブサイトを開発する際に必要な労力を減らす為にデザインされました。

nginx

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

MariaDB

MariaDBは、MySQL派生のオープンソースなリレーショナルデータベースシステムです。 また、MySQLとほぼ同じデータベースエンジンに対応しています。

Amazon EC2

Amazon EC2は“Amazon Elastic Compute Cloud”の略称です。Amazon Web Services(AWS)の一部であり、仮想化されたWebサーバーのコンピュータリソースをレンタルできるサービスです。

0グッド

0クリップ

投稿2020/12/09 07:09

編集2020/12/10 05:07

お伺いしたい事

現在djangoとnginx、mariadbでwebアプリケーションを作成しているのですが、
ページ遷移や処理を行った時に【502 Bad Gateway】を表示されます。
ですが、ページをリロードしたり、ページバック後に同じ処理を行うと正常に処理されます。
これはnginxの不具合でしょうか?
それともアプリ側の問題でしょうか?

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

502 Bad Gatewayページが突如表示されるが、リロードすると正常に処理が行われます。

本プロジェクト(docker-compose)の構成

django
├── docker-compose.yml
├── mysql
├── sql
├── nginx
│ ├── conf
│ │ └── app_nginx.conf
│ └── uwsgi_params
└── python
├── Dockerfile
└── requirements.txt

該当のソースコード

docker

1#docker-compose.yml 2 3version : "3.4" 4services: 5 db: 6 image: mariadb 7 restart: always 8 command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci 9 ports: 10 - 3308:3306 11 volumes: 12 - ./docker/mysql/conf.d:/etc/mysql/conf.d 13 - ./log/mysql:/var/log/mysql 14 environment: 15 - MYSQL_ROOT_PASSWORD=1126 16 - MYSQL_DATABASE=testdb 17 - MYSQL_USER=maria 18 - MYSQL_PASSWORD=1126 19 20 python: 21 build: python 22 command: uwsgi --socket :8001 --module mysite.wsgi --py-autoreload 1 --logto /tmp/mylog.log 23 volumes: 24 - ./src:/code 25 - ./static:/static 26 expose: 27 - "8001" 28 depends_on: 29 - db 30 31 nginx: 32 image: nginx:1.13 33 ports: 34 - "8000:8000" 35 volumes: 36 - ./nginx/conf:/etc/nginx/conf.d 37 - ./nginx/uwsgi_params:/etc/nginx/uwsgi_params 38 - ./static:/static 39 depends_on: 40 - python

uwsgi

1'''呪文''' 2uwsgi_param QUERY_STRING $query_string; 3uwsgi_param REQUEST_METHOD $request_method; 4uwsgi_param CONTENT_TYPE $content_type; 5uwsgi_param CONTENT_LENGTH $content_length; 6 7uwsgi_param REQUEST_URI $request_uri; 8uwsgi_param PATH_INFO $document_uri; 9uwsgi_param DOCUMENT_ROOT $document_root; 10uwsgi_param SERVER_PROTOCOL $server_protocol; 11uwsgi_param REQUEST_SCHEME $scheme; 12uwsgi_param HTTPS $https if_not_empty; 13 14uwsgi_param REMOTE_ADDR $remote_addr; 15uwsgi_param REMOTE_PORT $remote_port; 16uwsgi_param SERVER_PORT $server_port; 17uwsgi_param SERVER_NAME $server_name; 18

conf

1#nginx/conf/app_nginx.conf 2 3upstream django { 4 ip_hash; 5 server python:8001; 6} 7 8server { 9 listen 8000; 10 server_name 127.0.0.1; 11 charset utf-8; 12 13 location /static { 14 alias /static; 15 } 16 17 location / { 18 uwsgi_pass django; 19 include /etc/nginx/uwsgi_params; 20 } 21} 22 23server_tokens off; 24

補足情報(FW/ツールのバージョンなど)

nginxは1.13
django3.1
mariadb10.4.8

nginxがのバージョンが古い事をしったので、
最新のものにバージョンアップしたのですがそれでも問題は解決しませんでした。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hentaiman

2020/12/09 09:51

>これはnginxの不具合でしょうか? >それともアプリ側の問題でしょうか? ログ見て判断
hasami

2020/12/10 04:13

WSGIは何を使用していますか? 以前、設定が悪く、uWSGIが再起動を繰り返し、同様の現象になったことがあります。
nre

2020/12/10 04:57

WSGIはuWSGI==2.0.17を使用しています! djangoは3.1.4です。 現在docker-composeで動かしているため、ツリーやファイルを記載させていただきますので、ご確認して頂けましたら幸いです!
hasami

2020/12/10 07:15

/tmp/mylog.logファイルには、何か出力されていないでしょうか?
nre

2020/12/10 13:26

ご回答が遅くなってしまい申し訳ございません。 エラーが頻出する処理(会員登録時に必要項目を入力し送信する処理)を行った際のログを下記に記載いたします。 ```mysqllog 201210 13:19:50 15 Connect maria@django_python_1.django_default on testdb using TCP/IP 15 Query SET autocommit=0 15 Query SET autocommit=1 15 Query SELECT @@SQL_AUTO_IS_NULL 15 Query SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED 15 Query SELECT `register_user`.`id`, `register_user`.`password`, `register_user`.`last_login`, `register_user`.`is_superuser`, `register_user`.`username`, `register_user`.`first_name`, `register_user`.`last_name`, `register_user`.`email`, `register_user`.`top_image`, `register_user`.`twitter`, `register_user`.`instagram`, `register_user`.`skill`, `register_user`.`area`, `register_user`.`request_fee`, `register_user`.`portfolio`, `register_user`.`self_introduction`, `register_user`.`like`, `register_user`.`created_at`, `register_user`.`is_staff`, `register_user`.`is_active`, `register_user`.`date_joined` FROM `register_user` WHERE (`register_user`.`email` = 'ren80001@gmail.com' AND NOT `register_user`.`is_active`) 15 Query SET autocommit=0 15 Query COMMIT 15 Query SET autocommit=1 15 Query SELECT (1) AS `a` FROM `register_user` WHERE `register_user`.`username` = 'hoge' LIMIT 1 15 Query SELECT VERSION() 15 Query INSERT INTO `register_user` (`password`, `last_login`, `is_superuser`, `username`, `first_name`, `last_name`, `email`, `top_image`, `twitter`, `instagram`, `skill`, `area`, `request_fee`, `portfolio`, `self_introduction`, `like`, `created_at`, `is_staff`, `is_active`, `date_joined`) VALUES ('pbkdf2_sha256$216000$2Hlcj3tfskma$kzdUEIcVrZ05xVzbWau2+RpoMzGTRNr0n1bm2FXok/U=', NULL, 0, 'hoge', 'hoge', 'hoge', 'hogehoge@gmail.com', '', '', '', '', '', '', '', '', 0, '2020-12-10 13:19:50.201506', 0, 0, '2020-12-10 13:19:50.201578') RETURNING `register_user`.`id` ```
hasami

2020/12/10 14:17

すみません、MySQLは関係ないです。 uWSGIのログが見たいです。 /temp/mylog.logだと思ったのですが、間違っていたのであれば、申し訳ありません。
nre

2020/12/10 16:52

全然問題ございません! ちなみに/temp/mylog.logを探したんですが見つける事が出来ずさらに、uWSGIのログを出力するのに手こずっております。ただ、nginxのエラーログとアクセスログを出力する事が出来ましたがもしかしてこちらが原因でしょうか? error.log 2020/12/10 16:36:43 [error] 19#19: *20 upstream prematurely closed connection while reading response header from upstream, client: 172.21.0.1, server: 127.0.0.1, request: "POST /user_create/ HTTP/1.1", upstream: "uwsgi://172.21.0.3:8001", host: "localhost:8000", referrer: "http://localhost:8000/user_create/" 2020/12/10 16:42:11 [error] 19#19: *26 open() "/static/js/load.js" failed (2: No such file or directory), client: 172.21.0.1, server: 127.0.0.1, request: "GET /static/js/load.js HTTP/1.1", host: "localhost:8000", referrer: "http://localhost:8000/user_create/done"
nre

2020/12/10 17:25

二つ目のエラー(2020/12/10 16:42:11 [error] )部分についてはテンプレート.htmlでload.jsを読み込む設定なのにload.jsがないためこちらのエラーが起きていたようです。そのためテンプレートのload.js読み込み部分を削除いたしました。 ただ現状一つ目のエラーがまだ残っているため、同じように画面が表示されない現象が続いております
hasami

2020/12/10 23:53

localhost:8000でリッスンしているサービス(uWSGI)が、nginxがレスポンスを読み込んでいる間に、接続を閉じています。 uWSGIに原因があると考えられます。
nre

2020/12/11 02:29

ありがとうございます! とりあえず原因がuwsgiだとわかったので調べて見ます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問