問題
nginxでロードバランサとしても動くリバースプロキシを設定してみた。んだけど、502 Bad Gateway。なんじゃそりゃ?
要件
- xxx.xxx.xxx.xxxというグローバルIPと
- tainaka.comという名前が与えられているリバースプロキシがいる
- tainaka.comという名前でリクエストが来た場合は
- 物理的には同サーバで動いているアプリケーションのポートにリクエストを振る
- アプリケーションは複数プロセス立っていて、それぞれ違うポートで動いている
- プロキシサーバはポート80番でnginxしか開かない
ロードバランサつくるお
以下のように/etc/nginx/nginx.conf
を設定
# 基本デフォルトなので抜粋
http {
upstream ritsu {
server localhost:19001;
server localhost:19002;
server localhost:19003;
server localhost:19004;
server localhost:19005;
}
server {
listen 80;
server_name tainaka.com;
location / {
proxy_pass http://ritsu;
}
}
}
上記のように、
upstream {{クラスタ名}} { server {{アプリケーションアドレス:ポート}}; # ... ## もちろんリモートも可 }
を設定しておけば
server { listen {{公開プロキシポート}} server_name {{公開ホスト名}} location {{アクセスパス}} { proxy_pass http://{{クラスタ名}} } }
で、田井中.comでアクセスが来たら律アプリケーション(複数)に振り分けることができる。ぺろぺろ。 超簡単。
(とはいえ、わたくしapacheでロードバランサつくったことないので何をもって"超簡単"と言えるのか比較対象無いんですけどね)
502だお
sudo /etc/init.d/nginx restart
そしてブラウザからtainaka.comにアクセスすると
( ゚∀゚)・∵. グハッ!!
502だしググった
- 502 Bad Gateway とは?
- 502 nginx
色々ためす
解決した
これであった
diff -C3 nginx.conf.wrong nginx.conf.correct
*** nginx.conf.wrong 2013-10-10 09:39:13.209641000 +0900 --- nginx.conf.correct 2013-10-10 09:39:32.209641001 +0900 *************** *** 1,10 **** http { upstream ritsu { ! server localhost:19001; ! server localhost:19002; ! server localhost:19003; ! server localhost:19004; ! server localhost:19005; } server { listen 80; --- 1,10 ---- http { upstream ritsu { ! server localhost:18001; ! server localhost:18002; ! server localhost:18003; ! server localhost:18004; ! server localhost:18005; } server { listen 80;
つまりアプリケーションのポートを間違えて書いていた。
結局502とは
- 名前解決できて
- プロキシサーバ発見できてコネクションも成立して
- だけどプロキシサーバより先のサーバ(上位サーバっていうの?)が
- 「正しいレスポンスを」「何かしらの理由で返してくれない」場合
- 502 Bad Gateway
ということになるのか?StackOverflowでは、通信バッファとかcgi設定をミスってたりとかの理由で「返してくれない」みたい。今回では「上位サーバが見つからない」という理由。でも名前解決できてコネクション成立してるから404ではないわけか。
プロキシ挟んでいるぶんだけ、HTTPのステータスもよく分からん情報量足らんな感じなのかな。
雑感
- 辛いもの食べた翌日に必ずお腹痛いので辛い
- できること増えてきた一方で「知っておかねばならない知識」を知らない気がする
- やや危険
DRY
- 作者: 久保達彦,道井俊介
- 出版社/メーカー: 技術評論社
- 発売日: 2016/01/16
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (4件) を見る
- 作者: 鶴長鎮一,馬場俊彰
- 出版社/メーカー: 技術評論社
- 発売日: 2015/09/26
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る