Почему не работает настройка NGINX?

Пытаюсь сделать заглушку для админок сайтов на сервере через настройку NGINX

location ~* /(wp-login\.php|administrator|admin\.php) {
    set $humantest 0;
    if ($http_cookie !~* "humans=checktest") {
        set $humantest 1;
    }
    if ($args ~* (callback|logout|lostpassword)) {
        set $humantest 0;
    }
    if ($humantest = 1) {
        add_header Content-Type text/html;
        return 200 "<html><body><script>document.cookie='humans=checktest;path=/';location.reload();</script></body></html>";
    }
    error_page 404 = @fallback;
}


Но оно не работает, что с этим кодом не так?
  • Вопрос задан
  • 79 просмотров
Решения вопроса 1
@dodo512
location ~ /(wp-login|admin)\.php {
    set $humantest 0;
    if ($http_cookie !~* "humans=checktest") {
        set $humantest 1;
    }
    if ($args ~* (callback|logout|lostpassword)) {
        set $humantest 0;
    }
    if ($humantest = 1) {
        add_header Content-Type text/html;
        return 200 "<html><body><script>document.cookie='humans=checktest;path=/';location.reload();</script></body></html>";
    }
    error_page 404 = @fallback;
    
    include fastcgi_params;
    fastcgi_pass ...
}

Нужно учитывать что блоки location заданные регулярными выражениями проверяются в порядке их следования в конфигурационном файле. Проверка регулярных выражений прекращается после первого же совпадения. Так что этот блок должен быть выше чем location ~ \.php
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы