haproxy × nginx × unicron の設定でハマった
はじめに
2台のマシンという制限の中で冗長化を考え
という構成になっています。
3000ポートではRailsのアプリケーションが動いています。
ハマったところ
ハマったところは Server1のRailsが redirect_to などの同一ドメイン内へのアクセスを行うと example.domain.com:82 portでアクセスしようとしてきてエラーになるというものでした。
原因
原因は、下記のように Railsアプリケーション(unicorn)が82ポートからアクセスがきていると認識し、 きたポート通りの82ポートへ返すようにしているというのが原因でした。
解決方法
今回の解決方法は haproxy, nginx でヘッダーを拡張し、 Railsアプリケーション(unicorn)側にどこからのアクセスかを認識させた。
具体的な方法はか下記
nginx
set_real_ip_from {haproxyのローカルIP};
real_ip_header X-Forwarded-For;
haproxy
backend server_backend option forwardfor
まとめ
- haproxy使ったサーバー構築を初めてゼロから構築してみたのでハマった。
- nginx1.4がでたのでnginxでやるのもいいかも
- アプリ担当の人に迷惑をかけた。 すんません。
ハイパフォーマンスHTTPサーバ Nginx入門
posted with amazlet at 13.04.25