WebページにIPアクセス制限とBasic認証を設定する(Nginx)

WebページにIPアクセス制限とBasic認証を設定する(Nginx) プログラミング

この記事では、AmazonLinux2023上にNginxをインストールして、公開したWebページにIPアクセス制限とBasic認証の設定をしていきます。

前提

AmazonLinuxサーバー上にNginxをインストールをして、Webページの公開が完了していることが前提です。設定方法は以下の記事に記載しています。

IPアクセス制限の設定方法

①Nginxの設定ファイルを開き、includeするファイルパスを確認します。

cd /etc/nginx # ディレクトリ移動
sudo cat nginx.conf # 設定ファイル

http内のseverブロックは、Nginxへ接続された通信の処理設定を記載しています。
/etc/nginx/default.d/*.conf」のファイルがincludeで読み込まれて処理されてることが分かるので、読み込み用ファイルを作成して、処理を追加します。

#サーバー内のincludeファイルフォルダの確認
    server {
        listen       80;
        listen       [::]:80;
        server_name  _;
        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        error_page 404 /404.html;
        location = /404.html {
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
    }

②フォルダを移動して、「test.conf」を作成する。

cd /etc/nginx/default.d/ # ディレクトリ移動
sudo touch test.conf # 読み込み用ファイル

③IPアクセス制限設定を行う

sudo vim test.conf

# インサートモード [i]
# 書き込み保存 [:wq]
# 強制終了 [:q!]

# アクセス制限情報「/」は対象のディレクトリパス
location / {
		allow xx.xx.xx.xx/xx;
        deny all;
}

④設定を確認して更新反映

sudo nginx -t
sudo systemctl reload nginx

⑤ブラウザでWebページにアクセス(EC2のグローバルIP)すると、接続が遮断される。

Basic認証の設定方法

Basic認証は、httpd-toolsを使用して制限をかけていきます。

httpd-toolsのインストール

sudo dnf install httpd-tools

②パスワードファイルの作成

sudo htpasswd -c /etc/nginx/.htpasswd admin(ユーザー名)
#2人目以降は「-c]はつけない
>パスワードを入力する

③設定ファイルへの登録
IPアクセス制限を設定した時と同様に読み込み用設定ファイルを作成する

cd /etc/nginx/default.d/ # ディレクトリ移動
sudo touch test.conf # 読み込み用ファイル

vimで開いて以下の設定を書き込み

location / {
		auth_basic "Restricted Area"; # 認証時の表示名
		auth_basic_user_file /etc/nginx/.htpasswd; # 2で作成したファイル
}

④サーバーへ更新内容を反映。

sudo nginx -t
sudo systemctl reload nginx

⑤ブラウザで動作確認をすると、認証が表示されるので先ほど設定したユーザー名とパスワードを入力する

タイトルとURLをコピーしました