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

Встроенный включает httpd.conf?

Допустим, у меня есть файл 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 стоять для добавления