Nginxで作成したWordPressに対して、管理画面へのIP制限をかけるというのは皆さんよくやられていると思います
/wp-login.php
やwp-admin
など、が管理画面と言われているやつです。
これらに対して正規表現を使って制限をかける方法があります。
nginx+wordpressで管理画面のURLにIP制限をかけるのように書くやり方です
location ~* /wp-login\.php|/wp-admin/((?!admin-ajax\.php).)*$ { allow {接続元IP} allow {サーバーのGlobalIP}; allow 127.0.0.1; deny all; location ~ \.php$ { fastcgi_pass phpfpm; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; fastcgi_buffers 16 16k; fastcgi_buffer_size 32k; } index index.php index.html index.htm; try_files $uri $uri/ /index.php?$args; }
これを書く場所はnginx.confなのですが、その書く順序も問題になります。
PHPの設定を記述している場所より先に書かなければなりません。
つまり↓のように書くということです
location ~* /wp-login\.php|/wp-admin/((?!admin-ajax\.php).)*$ { allow {接続元IP} allow {サーバーのGlobalIP}; allow 127.0.0.1; deny all; location ~ \.php$ { fastcgi_pass phpfpm; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; fastcgi_buffers 16 16k; fastcgi_buffer_size 32k; } index index.php index.html index.htm; try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { fastcgi_pass phpfpm; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; fastcgi_buffers 16 16k; fastcgi_buffer_size 32k; }
PHPの設定より先に書くと、wp-admin
は弾くことが出来るが、wp-login.php
などは弾くことが出来なくなったりします。
上記のように書けばIP制限をかけることが出来ます。