当社はNginxでConohaのロードバランサーを使用している。
今まではPINGでヘルスチェックを行っていたのだが、Nginxに障害が出た際に、Pingだと予備サーバーのNginxデーモンが落ちた際に、うまいことバランシング出来なくて、障害が発生したので、HTTPのヘルスチェックに切り替えることにした。
でもうまいこと行かない
原因はHTTPSでした。
今までNginxは
server {
listen 80;
server_name xxx.medicalfields.jp;
if ($http_x_forwarded_proto != https) {
return 301 https://$host$request_uri;
}
}
てな感じで設定したんだけど、どうもConohaだとHTTPでアクセスするとステータスコードが301(URL転送)になってヘルスチェック失敗になるっぽい
そのため親ディレクトリだけはHTTPでアクセスした際にリダイレクトしないように設定した
解決↓
server {
listen 80;
server_name xxx.medicalfields.jp;
location / {
root /usr/share/nginx/html;
index index.html index.htm index.php;
}
location ^~ /php/ {
if ($http_x_forwarded_proto != https) {
return 301 https://$host$request_uri;
}
}
}
ロードバランサーでHTTPのヘルスチェックに失敗する場合は、参考にしてください