ランダムサイズ(20文字から30k文字)のPOST要求を処理するDjangoビューを持っています。このAPIは登録ユーザーのみ利用可能であり、セッションヘッダーで検証されます。 APIは私のテストケースでうまく動作しますが、Nginxのログには502があります。エラーログを表示このライン::いくつかのテストの後Nginx + uWSGI + Djangoは大きなリクエストボディと期限切れのセッションのときに502を返す
2016/12/26 19:53:15 [error] 1048#0: *72 sendfile() failed (32: Broken pipe) while sending request to upstream, client: XXX.XXX.XXX.XXX, server: , request: "POST /api/v1/purchase HTTP/1.1", upstream: "uwsgi://unix:///opt/project/sockets/uwsgi.sock:", host: "staging.example.com"
は、私は大きな体の要求に、このコールを再作成するために管理しました。起こるように見える何
curl -XPOST https://staging.example.com/api/v1/purchase \
-H "Accept: application/json" \
-H "token: development-token" \
-H "session: bad-session" \
-i -d '{"receipt-data": "<25677 character string>"}'
HTTP/1.1 100 Continue
HTTP/1.1 502 Bad Gateway
Server: nginx/1.4.6 (Ubuntu)
Date: Mon, 26 Dec 2016 19:54:32 GMT
Content-Type: text/html
Content-Length: 181
Connection: keep-alive
<html>
<head><title>502 Bad Gateway</title></head>
<body bgcolor="white">
<center><h1>502 Bad Gateway</h1></center>
<hr><center>nginx/1.4.6 (Ubuntu)</center>
</body>
</html>
は、Djangoはセッションが有効でないことを確認し、クライアントの仕上がりが体を提供する前に応答(403)を返すということです。
もし私が正しいのであれば、DjangoはNginxの代わりにヘッダをチェックした後に100状態を送信する方法がありますか?
もしそうでなければ、ヘッダをチェックする前にボディを待つよりも洗練された解決策がありますか?
ありがとうございました。私はこれを確認する時間がありません。あなたや他の人がこれを確認できるなら、それは素晴らしいでしょう。 – joaonrb