セルフホスティング環境で、IP アドレス制限や Basic 認証の設定内容・手順をご紹介します。
本ドキュメントは root 権限が付与されたセルフホスティング用です。Amimoto マネージドホスティングをご利用の場合はサポートへ以下のフォーマットでご連絡ください。
● 対象サーバID (例: amimoto.a000)
amimoto.a
● 対象 (いずれかをご選択ください)
・HTTP/HTTPS のサイト全体
・HTTP/HTTPS の WordPress 管理画面 (/wp-login.php, /wp-admin/*) のみ
● アカウント情報 (ご希望が無い場合はランダムで発行いたします)
ユーザID:
パスワード:
設定方法
WordPress の管理画面にアクセス制限をかける場合は以下のファイル・ディレクトリを対象とします。
- /wp-login.php
- /wp-admin/
※ただし admin-ajax.php を除く
網元AMIで使用している Nginx では .htaccess が使えませんので、 /etc/nginx/conf.d/default.conf(または /etc/nginx/conf.d/example.com.conf )を編集します。
このファイルは root ユーザーのみが変更出来ますので、以下のようなコマンドでroot ユーザへ切り替えをしてください。
$sudo su -
/etc/nginx/conf.d/default.conf の抜粋
server {
listen 80 default;
server_name _;
root /var/www/vhosts/i-xxxxxx;
index index.html index.htm;
charset utf-8;
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log;
include /etc/nginx/drop;
add_header X-Cache-Status $upstream_cache_status;
expires $expires;
set $mobile '';
#include /etc/nginx/mobile-detect;
include /etc/nginx/wp-front;
location ~* /(phpmyadmin|myadmin|pma) { access_log off; return 404; }
#
# redirect server error pages to the static page /50x.html
#
error_page 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
IPアドレスで制限する場合
20行目前後(include /etc/nginx/wp-front; )の行の上に以下のコードを追記してください
location ~* /wp-login\.php|/wp-admin/((?!admin-ajax\.php).)*$ {
index index.php index.html index.htm;
# 許可するIPアドレスを記述
allow 192.168.0.1;
deny all;
proxy_no_cache $do_not_cache;
proxy_cache_bypass $do_not_cache;
proxy_redirect off;
proxy_cache czone;
proxy_cache_key "$scheme://$host$request_uri$mobile";
proxy_cache_valid 200 0m;
proxy_pass http://backend;
}
次のような組み合わせで許可するIPアドレスを追記してください。
allow 192.168.0.1;
Basic 認証で制限する場合
事前に .htpasswd を作成しておきます。
まず、SSHでインスタンスにログイン後、先ほどと同じように、sudo su - でルートユーザーに変更しておきます。
/etc/nginx/conf.d/ に .htpasswd を作成します。
Basic 認証のユーザー名を「wpbasic」としたい場合は
# htpasswd -c /etc/nginx/conf.d/.htpasswd wpbasic
と入力します。
コマンドが通ると新しいパスワードとそのパスワードの再入力を求められます。
New password:
Re-type new password:
成功すると Adding password for user wpbasic と表示されます。
成功したら、/etc/nginx/conf.d/default.conf (または /etc/nginx/conf.d/example.com.conf )の20行目前後(include /etc/nginx/wp-front; )の行の上に以下のコードを追記してください
location ~* /wp-login\.php|/wp-admin/((?!admin-ajax\.php).)*$ {
index index.php index.html index.htm;
# Basic認証のメッセージ
auth_basic "Please enter your ID and password";
# .htpasswd ファイルのパス
auth_basic_user_file /etc/nginx/conf.d/.htpasswd;
proxy_no_cache $do_not_cache;
proxy_cache_bypass $do_not_cache;
proxy_redirect off;
proxy_cache czone;
proxy_cache_key "$scheme://$host$request_uri$mobile";
proxy_cache_valid 200 0m;
proxy_pass http://backend;
}
その後、設定を反映させるために以下のコマンドで Nginx を再起動してください。
# service nginx restart
実際にアクセスをして、設定が正しく動作するかを確認してください。
なお、作業完了後にはサーバからログアウトを行ってください。
# exit
logout
$ exit
logout
Connection to your sever closed.