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

Nginx deny all для блока местоположения не работает должным образом

У меня есть настройка блога WordPress с помощью nginx. Я продолжаю видеть это

80.82.64.220 - - [10/Nov/2016:08:21:48 +0000] "POST /xmlrpc.php HTTP/1.0" 499 0 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6.0)"

Один запрос в секунду. Поэтому я попытался запретить доступ к xmlrpc.php через файл конфигурации nginx.

 location /xmlrpc.php {
    deny all;
    access_log off;
 }

Я просматриваю файл доступа и вижу, что к нему все еще обращаются. Понятия не имею почему. Я пробую завиток со своей машины разработчика со случайными параметрами и получаю файл xml. Я не знаю, почему я получаю XML-файл.

Я заметил, что все запросы поступают с одного и того же сервера. Так что я думаю, давайте просто заблокируем ip, так что я делаю

sudo ufw deny from 80.82.64.220

Я проверяю статус, и он показывает, что правило добавлено. Я просматриваю файл доступа и все еще вижу, что к файлу обращаются.

Все изменения в брандмауэре и файле конфигурации nginx, включая файл журнала доступа, находятся на моем реальном сервере. Этот сервер находится за обратным прокси-сервером nginx. Журнал доступа обратного прокси-сервера не имеет этого журнала доступа, поэтому я предполагаю, что доступ к основному серверу осуществляется напрямую.

Но как все еще осуществляется доступ к файлу?

Блок местоположения не работает, потому что он не обрабатывает /xmlrpc.php запрос. Видеть этот документ для подробностей.

Использовать ^~ модификатор или = конструкция для повышения приоритета блока местоположения (см. этот документ подробнее):

location = /xmlrpc.php { ... }