Назад | Перейти на главную страницу

Nginx Wordpress блокирует WP-Admin и панель администратора

Я пытаюсь закрыть доступ к wp-admin с помощью следующих кодов.

Да, работает, если я перейду на example.com/wp-admin, меня заблокируют. Однако, если я вошел в систему как администратор и наберу example.com/wp-admin/index.php, я все равно могу войти и поиграть с панелью управления.

Или я могу просто ввести example.com/wp-admin/index.php и все равно войти в систему оттуда.

Как мне исправить это, чтобы вообще не было доступа к * / wp-admin / (что угодно)? Кроме ajax.

Или есть ли способ закрыть панель администратора (например, из настройки wp и т. Д.)?

Большое спасибо за ваше время

# Deny brute force access to wp-login.php
location = /wp-login\.php {
    limit_req zone=one burst=1 nodelay;
    fastcgi_pass unix:/var/run/php7.3-fpm.sock;     
}

# Add trailing slash to */wp-admin requests.
rewrite /wp-admin$ $scheme://$host$uri/ permanent;

# Don't cache uris containing the following segments
if ($request_uri ~* "/wp-admin/|/wp-json/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") {
    set $skip_cache 1;
}

# Block wp-admin by IP
location ~* ^/wp-(admin\.php|login\.php|admin/*$|admin/.*\.php) {
    deny all;
    error_page 403 = @wp_admin_ban;
}

location @wp_admin_ban {
    rewrite ^(.*) https://example.com permanent;
}

location /wp-admin/admin-ajax.php {
    allow all;
}

Вы должны иметь возможность настроить свое регулярное выражение:

# Block wp-admin by IP
location ~* ^\/wp-(admin\.php|login\.php|admin\/.*|includes\/.*) {
    allow 127.0.0.1; # and other IP's...
    include common/acl.conf; # a method to share code between locations for blocking by IP. 
    deny all;
    error_page 403 = @wp_admin_ban;
}

Исправлена ​​ведущая косая черта вместе с подстановочными знаками в разделе admin / * и включает / *.