ELB -> gunicorn 直で接続したら通信できなかった
shimizukawa.icon 上記の事象を正確に覚えていない -> 見つけた、という話のチャットログ
2015/8/4 with hirokiky, aodag, tokibito, drillbits
Nginx要らなそうなんでWSGIサーバーを直接80で建てようと思うんですけど問題ないですよね
APIサーバーなので静的ファイルは基本要らない。いる分はWhiteNoiseで対応
HTTPSはELBにやらせる
普段Nginxがいるから無いと不安になる
前段にELBいるならよいのでは
ELBから流すなら80じゃなくてもよいのでは、ってだけ思った
あーたしかに? なんか中国からアクセスくるしね。IP総当りしてるのあれ
目を付けたネットワーク内のセグメント食いつくすくらいはやりそうだな
IP総当り普通にやってそうな感じ
ELBからgunicorn直接繋いだときになぜか通信できなくて、諦めてnginx立てたことがある。後からそれがgunicornのバグかなにかだったような記憶があるんだけど・・・忘れた。何だったかなあ
SSL関連ではなかったか?
ELBにSSL証明書置いて、後ろの gunicorn 5000 x 2台にhttp通信してた
keepaliveとかそれ関連の何か?
nginx -> gunicornだとhttpって1.0なんだっけ?ELBはHTTP1.1そのまま通すんだっけか
設定できるらしいけど、デフォルトはhttp 1.0だな
keepalive使いたければ、1.1にしろって書いてあった
wsgiサーバーが対応してればの話だけど。
ELBはHTTP1.1で通してきそうだが...
ELBがkeepaliveをさばいてくれることもなさそう
さっきの、ELBからのhealth checkがうまくいかないとかだったかなあ・・・
health check を受ける側のタイムアウト設定によって、gunicornが応答しなくなる例だ
Content-Length どうこうはmod-wsgiでもなんかあったな..
なんかまあnginxはリクエストをよしなに正規化してくれる感あるけど、それが無くなることで不具合出る可能性はありそう
試して問題なければnginx無しで良い気がする。
調べるコストとやってみるコストが同じくらいな気分になってきましたね。
その後
ELBから直接uWSGIみれた。DjangoのMiddlewareでContent-Length足してあげればOK
プライベートのコンテナ引いてきてECS上のuWSGIを見れるまでいった。
あっ、それだ