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

Могу ли я отказать в nginx на основе URI и IP?

В основном у меня есть сайт на wordpress (с магазином электронной торговли и социальным логином). Я запретил доступ к wp-login.php по IP-адресу. Проблема в том, что для входа в социальную сеть используется этот файл входа в систему. Поэтому мне интересно, можно ли: - заблокировать почти все запросы к wp-login.php по IP-адресу и разрешить по IP только определенные запросы. Смысл
wp-login.php разрешить 1 ip запретить все
wp-login.php?action=lostpassword разрешить 1 ip запретить все
wp-login.php?action=rp&key=.*?&login=.* разрешить 1 ip запретить все
.
.
wp-login.php?ywsl_social=google разрешить все IP
wp-login.php?ywsl_social=twitter разрешить все IP

Что-то вроде этого:

location = /wp-login.php {
    if ($query_string = "ywsl_social=google|ywsl_social=twitter") 
        {
            allow all;
            fastcgi_pass   unix:/var/sockets/sock.sock;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
            fastcgi_param HTTPS on;
    }
    else {
            allow 1.1.1.1;
            deny all;
            fastcgi_pass   unix:/var/sockets/sock.sock;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
            fastcgi_param HTTPS on;
        }