ハマログ

株式会社イーツー・インフォの社員ブログ

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;
    }

以上です。

AWSnginx

  池島 篤則   2016年7月3日


関連記事

Amazon EventBridgeスケジューラーの実行ログを確認する

Amazon EventBridge スケジューラでEC2インスタンスの自動停止…

Google Cloud ArmorでCloud Shellを使ったルールのコピー

Google Cloud Armorで設定したルールを別の環境にも同様に適応した…

CentOS Stream 8でSSH鍵認証ログインできない(暗号化形式が古かった)

CentOS Streamでサーバー構築をしています。ユーザーアカウントを作成し…


← 前の投稿

次の投稿 →