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

Как добавить каталог в белый список в конфигурации Apache

В Wordpress одним из немногих эффективных способов снижения нагрузки на сервер является внесение отдельных клиентов в белый список. /wp-login.php и /wp-admin/:

<Directory /wp-admin>
    order deny,allow
    deny from all
    allow from 10.1.1.50
    allow from ...other ips...
</Directory>

Но я не хочу редактировать и перезагружать Apache, чтобы изменить этот список. На моем виртуальном хосте я хочу:

<Directory /wp-admin>
     RewriteEngine On
     RewriteMap hosts-allow txt:/var/www/html/wp/wp-admin/hosts.allow
     RewriteCond ${hosts-allow:%{REMOTE_ADDR}|NOT-FOUND} =NOT-FOUND [AND]
     RewriteCond ${hosts-allow:%{REMOTE_HOST}|NOT-FOUND} =NOT-FOUND
     RewriteRule ^ - [F]
</Directory>

Но:

[root@blah httpd]# service httpd reload                                                                                                                                                                     
Reloading httpd: not reloading due to configuration syntax error
                                                       [FAILED]
[root@blah httpd]# apachectl -S                                                                                                                                                                             
Syntax error on line 34 of /etc/httpd/sites-enabled/example.org.conf:
RewriteMap not allowed here

Итак, есть ли способ выполнить то, что здесь сказано, для чего не требуется RewriteMap, или мне нужно написать новый модуль?

Попробуй это:

    RewriteMap ipslist txt:/full/path/to/iplist.txt
    RewriteCond %{REMOTE_ADDR} ^(.*)$
    RewriteCond ${ipslist:%1|black} ^black$ [NC]
    RewriteRule (.*) - [F]

И ваш файл должен выглядеть примерно так:

192.168.0.12 ok
127.0.0.1 ok
[...]

Создайте файл .htaccess и поместите туда разрешенные IP-адреса. RewriteMap не допускается в Directory.