[AMI]NginxのWordPressへBasic認証を導入する

WordPressへBasic認証を導入する方法のメモです。

AMIで使用しているNginxで.htaccessを使ってBasic認証を導入した所、うまく行かなくて詰みました。

調べてみるとそもそもAMIのNginxでは.htaccessは使えないらしい…ということがわかりました。

Basic認証導入手順

以下の設定をしてあげることでBasic認証を導入することができました。

1. .htpasswdの作成

Basic 認証のユーザー名を「test」としたい場合は以下のコマンドを実行し、パスワードを入力します。

$ htpasswd -c /etc/nginx/conf.d/.htpasswd test
New password:xxxxxxxxxxxxxxx
Re-type new password:xxxxxxxxxxxxxxx

成功すると、

 Adding password for user test

と表示されます。

2. configファイルの編集

以下のように設定ファイルを編集します。

  • 変更前
$ vim /etc/nginx/conf.d/www.conf
---------------------------------------
server {
    listen       80 default_server;
    server_name  localhost;
    root         /var/www/public_html/wordpress;

    #auth_basic "Basic Auth";
    #auth_basic_user_file /etc/nginx/basic/.htpasswd;

    location / {
        index index.php index.html index.htm;
        try_files $uri $uri/ /index.php?$args;
    }

---------------- 以下略 ----------------
  • 変更後
$ vim /etc/nginx/conf.d/www.conf
---------------------------------------
server {
    listen       80 default_server;
    server_name  localhost;
    root         /var/www/public_html/wordpress;

    auth_basic "Basic Auth";
    auth_basic_user_file /etc/nginx/basic/.htpasswd;

    location / {
        index index.php index.html index.htm;
        try_files $uri $uri/ /index.php?$args;
    }

---------------- 以下略 ----------------

ベーシック認証の設定がコメントアウトされているのでコメントアウトを外してあげます。

3. 設定の確認

以下のコマンドで設定に問題がないかを確認します。

$ nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

このように表示されればOKです。

4. Nginxの再起動

設定を反映させるために以下のコマンドでNginxを再起動します。

$ systemctl restart nginx

5. アクセスしてみる

実際にサイトにアクセスしてみてBasic認証の画面が表示されれば成功です。