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

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

新規登録して質問してみよう
ただいま回答率
85.35%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Django

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

uWSGI

uWSGIは、PythonでWebサービスを動かすアプリケーションサーバの一つです。WSGI(Web Server Gateway Interface)アプリケーションコンテナの一種で、WSGIに則ったDjangoやFlaskなどで動かすことができます。

nginx

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

Q&A

0回答

2088閲覧

uWSGIが上手く機能せずNginxで502エラーが表示されてしまいます。

nre

総合スコア35

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Django

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

uWSGI

uWSGIは、PythonでWebサービスを動かすアプリケーションサーバの一つです。WSGI(Web Server Gateway Interface)アプリケーションコンテナの一種で、WSGIに則ったDjangoやFlaskなどで動かすことができます。

nginx

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

0グッド

0クリップ

投稿2020/12/11 04:42

前提・実現したいこと

nginxのerror.logに表示されるエラー「upstream prematurely closed connection while reading response header from upstream, client」
を解決して頻出するnginxの502エラーを解決したいです。

現在、docker-composeでnginxとdjango3、uWSGI、Mriadbの開発環境を構築しております。
すべてを連携させてlocalhost:8000にアクセスすると問題なくトップページや他のページは表示されるのですが、特定の処理を行うとエラーが出てしまうので、問題を解決する為にどなたかご教示して頂けましたら幸いです。

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

djangoで特定の処理を行う時に下記のエラーが発生し、
nginxの502エラーが表示されてしまいます。
※djangoのみで上記と同じ処理を行った場合は問題なく処理されます。

nginx

1#log/nginx/error.log 2020/12/11 11:53:12 [error] 20#20: *2 upstream prematurely closed connection while reading response header from upstream, client: 172.22.0.1, server: 127.0.0.1, request: "GET / HTTP/1.1", upstream: "uwsgi://172.22.0.3:8001", host: "localhost:8000"

該当のプロジェクト構成

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

該当のソースコード

docker

1#docker-compose.yml 2 3version : "3.4" 4services: 5 db: 6 """省略""" 7 8 python: 9 build: python 10 command: uwsgi --socket :8001 --module mysite.wsgi --py-autoreload 1 --logto /tmp/mylog.log 11 volumes: 12 - ./src:/code 13 - ./static:/static 14 expose: 15 - "8001" 16 depends_on: 17 - db 18 19 nginx: 20 image: nginx:1.19 21 ports: 22 - "8000:8000" 23 volumes: 24 - ./log/nginx/:/var/log/nginx 25 - ./nginx/conf:/etc/nginx/conf.d 26 - ./nginx/uwsgi_params:/etc/nginx/uwsgi_params 27 - ./static:/static 28 environment: 29 TZ: "Asia/Tokyo" 30 depends_on: 31 - python

conf

1#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;

Dockerfile

1FROM python:3.7 2ENV PYTHONUNBUFFERED 1 3RUN mkdir /code 4WORKDIR /code 5ADD requirements.txt /code/ 6RUN pip install -r requirements.txt 7ADD . /code/

試したこと

uwsgi.iniの追加やapp_nginx.confの設定変更を行って見ましたが別のエラーが発生してしまい、一度元の設定に変更しなおしました。

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

pythonのコンテナにはuWSGIはインストール済みでバージョンは2.0.17です。
特定の処理とは入力内容を元にトークン付きのメールを送信する処理で、何度もリロードを行うとたまにエラーなく処理が完了する場合があります。
djangoのプロジェクト内にuwsgi.pyは自動生成されておりますが、uwsgi.iniは作成しておりません。
uwsgi_paramsはお決まりの呪文が記載されております。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問