.png)
私は、Cloudflare DNS の背後にある Nginx で実行されている WordPress ウェブサイトを持っています。nginx.conf のすべての Cloudflare IP に「set_real_ip_from」を使用しました。自分のウェブサイトにアクセスしようとすると、ログに実際の IP が表示されます。デフォルトの WordPress 管理者ログイン ディレクトリを wp-admin から自分のディレクトリ名に変更しました。特定の IP だけが自分の WordPress にログインできるようにしたいのですが、ウェブサイトの構成でサーバー ブロックが次のように設定されているため、WordPress 管理location ~ /(wp-admin|wp-login|mydirectory) { allow my.real.ip; deny all; return 404; }
者にアクセスできず、404 が表示されます。このブロックを削除するとすべて正常に機能するので、入力ミスがあると思います。このフォーラムでいくつかの異なるバリエーションを調べましたが、どれも機能していないようです。wp-admin へのアクセスは許可されるが、その後は誰でもアクセスできるか、または全員がブロックされます。
編集 残念ながら、何を試してもうまくいかなかったので、location ~ /(wp-admin|wp-login|mydirectory) ブロックを削除し、nginx config を再読み込みし、wordpress にログインし、wp-admin change directory プラグインを無効にし、戻って location ~ /(wp-admin|wp-login|mydirectory) ブロックを再度追加しました。その中に、@Michael Hampton が提案したように location ~ .php$ { を追加しました。これで、「wp-admin」URL を使用して wordpress 管理ページにアクセスできるようになりました。カスタム URL でなぜうまくいかなかったのかはわかりませんが、nginx は他のユーザーがアクセスしようとするとブロックするので、これで大丈夫だと思います。ただし、なぜうまくいかなかったのかを知るのは興味深いでしょう :/
答え1
これに一致するすべてのリクエストに対して 404 を返すように明示的に要求したため、404 が返されますlocation
。
return 404;
404 以外のものを受け取りたい場合は、このステートメントを削除する必要があります。
さらに、 PHP ファイルを処理するには、location
その中にネストを配置する必要があります。location
location ~ /(wp-admin|wp-login|mydirectory) {
...
location ~ .php$ {
....