Допустим, у меня есть файл list_of_naughty_ip_blocks.conf. Могу ли я использовать директиву include для достижения эквивалента строки 8 в моем httpd.conf? Если да, то каков правильный синтаксис? Что-нибудь отметить о форматировании и синтаксисе list_of_naughty_ip_blocks.conf?
SetEnvIfNoCase User-Agent "FNetwork" UnwantedRobot
SetEnvIfNoCase User-Agent "NG 1.x" UnwantedRobot
SetEnvIfNoCase User-Agent "larbin" UnwantedRobot
<Directory "/var/www/">
Order Allow,Deny
Allow from all
Deny from env=UnwantedRobot
Deny from "list_of_naughty_ip_blocks.conf"
</Directory>
Отредактировано для ясности.
Просто укажите ключевую фразу «Запретить от» во включаемом файле:
<Location /secret/>
Order Allow,Deny
Allow from all
Deny from env=UnwantedRobot
Include conf.d/moredeny.inc
</Location>
В moredeny.inc
Deny from 192.168.1.1
Deny from 192.168.66.1
Deny from 192.168.1.1
"Грязный" способ - использовать sed
добавить строку после env=UnwantedRobot
шаблон. Предполагая, что у вас есть следующее в httpd.conf
:
<Directory "/var/www/">
Order Allow,Deny
Allow from all
Deny from env=UnwantedRobot
</Directory>
и ip.txt
файл включает:
1.2.3.4
5.6.7.8
выполните следующую команду:
$ while read ip; do sed -i '/env=UnwantedRobot/ a\
\tDeny\ from\ '"$ip"'' httpd.conf; done < ip.txt
вы получите результат:
<Directory "/var/www/">
Order Allow,Deny
Allow from all
Deny from env=UnwantedRobot
Deny from 5.6.7.8
Deny from 1.2.3.4
</Directory>
-i
означает редактировать файл на местеa
стоять для добавления