NginxのWordPressにIP制限をかける時の注意点

Nginxで作成したWordPressに対して、管理画面へのIP制限をかけるというのは皆さんよくやられていると思います

/wp-login.phpwp-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制限をかけることが出来ます。