AWSでnginxを使う
こんにちは池島です。またもやご無沙汰です。
最近はAWSの環境設定ばかり見ています。今回はnginxでサイトを作成しました。AWS、ELB、nginxという組み合わせだったので、設定ファイル変更で少し悩んだので備忘録的に書いておきます。編集した設定ファイルは「/etc/nginx/conf.d」配下の拡張子が*.confのファイルです。
今回やりたかったことは下記のことです。
1.ベーシック認証を利用したい
2.特定のIPアドレスからアクセスした場合はベーシック認証を解除したい
3.AWSのELBのヘルスチェックをHTTPで行いたい
4.ヘルスチェック以外のアクセスの場合、HTTPSを強制したい
これを実現するために設定に下記の内容を書いてみました。
#HTTPSの強制をチェックします set $https_c 0; #HTTPS以外でアクセスした場合はHTTPSを強制します if ($http_x_forwarded_proto != https) { set $https_c 1; } #ELBのヘルスチェックはHTTPSを強制しません if ($http_user_agent = "ELB-HealthChecker/1.0") { set $https_c 0; } #HTTPS強制が必要な場合、httpsでリダイレクトします if ( $https_c = 1 ) { return 301 https://xxx.xxxx.com$request_uri; } #IPアドレスをチェックします set $auth "Restricted"; #特定のIPアドレスからのアクセスした場合BASIC認証なしにします if ($http_x_forwarded_for ~* ^xxx\.xxx\.xxx\.xxx$) { set $auth off; } #ELBのヘルスチェックの場合もBASIC認証なしにします if ($http_user_agent = "ELB-HealthChecker/1.0") { set $auth off; } location / { try_files $uri $uri/ /index.php?$query_string; #必要な場合のみBASIC認証します auth_basic $auth; auth_basic_user_file /etc/nginx/.htpasswd; }
以上です。