
- •Принципы работы арасне
- •Директивы сервера
- •Блочные директивы
- •Запуск нескольких экземпляров Apache
- •Виртуальные хосты
- •Управление виртуальными хостами
- •Перезапуск Apache
- •Использование файлов .Htaccess
- •Общий шлюзовый интерфейс (cgi)
- •Установка переменных среды
- •Браузеры
- •Обработчики
- •Аутентификация
- •Команды allow и deny
- •Выбор языка
- •Поддержка русскоязычных кодировок,
- •Переадресация
- •Сенсорные изображения
- •Кэширование
- •Var Значение этого атрибута — имя переменной.
Принципы работы арасне
Web-сервер Apache является на сегодняшний день самым популярным в мире Web-сервером. Название Apache отражает особенности внутреннего строения сервера: он представляет собой комбинацию основного кода и ряда "заплат". Заплата - patch (пэтч), a Apache читается как "эпэчи". Есть и еще одно толкование, к которому склоняются довольно серьезные люди: Apache является удачным соответствием, потому что одноименное индейское племя обладало такой же находчивостью и приспособляемостью. Apache предоставляется пользователям бесплатно и создается командой добровольцев, которые за свою работу не получают ничего.
Первый Web-сервер был создан Тимом Бернерсом-Ли в CERN, европейском центре ядерных исследований. Разработка непосредственного предшественника Apache осуществлялась NCSA - Национальным центром суперкомпьютерных приложений, который находится в подчинении правительства США. Исходный текст, написанный на языке С, можно получить с узла http://www.ncsa.uiuc.edu.
Apache - это программа, которая работает в среде соответствующей многозадачной операционной системы. Исполняемый файл Apache называется httpd и обычно выполняется в фоновом режиме. Каждый запускаемый экземпляр httpd прежде всего обращает свое внимание на Web-узел, который на практике представляет собой попросту каталог. В каталоге узла обычно организовано три подкаталога:
Conf
Содержит файлы конфигурации, из которых самым важным является httpd.conf.
Htdocs
Содержит HTML-сценарии, предоставляемые клиентам узла. Этот каталог и его подкаталоги, т.н. Web-пространство, доступны для каждого, кто работает в Web, и при использовании не только для общедоступных данных является источником угрозы для безопасности. Logs Содержит данные регистрации доступа и ошибок.
Как правило, вне Web-пространства имеется каталог, обычно называемый cgi-bin, где размещаются CGI-сценарии. Это программы или сценарии командного процессора, которые пишет Web-мастер (или которые пишутся для Web-мастера) и которые Apache может выполнять от имени своих клиентов. Крайне важно по соображениям безопасности, чтобы этот каталог находился за пределами Web-пространства.
В холостом режиме Apache ничего не делает, только ожидает поступления запроса по IP-адресам и TCP-порту (портам), заданным в файле его конфигурации.
Когда на соответствующий порт поступает запрос, Apache принимает этот HTTP-запрос и анализирует заголовки. Затем применяя правила, установленные в файле конфигурации, сервер выполняет соответствующее действие.
Web-мастер осуществляет управление работой Apache через файл конфигурации сервера. В его распоряжении более 150 директив. Web-мастер также определяет модули, которые будут включены в состав Apache при компиляции. Каждый модуль содержит код для выполнения некоторого числа директив. Если какая-то часть директив не нужна, соответствующие модули можно не включать в двоичный файл -для этого нужно закомментировать их имена в файле конфигурации, который используется для управления компиляцией исходных файлов Apache. Исключение ненужных модулей позволяет сократить размер двоичного файла и может повлечь за собой повышение производительности сервера.
Как было сказано выше, исполняемый файл Apache называется httpd. Для запуска Apache в режиме отладки, необходимо добавить флаг —X:
# httpd-X,
при указании этого флага Apache будет работать в приоритетном режиме и его выполнение можно будет завершить нажатием клавиш [Ctrl-C]. Поскольку Apache работает в приоритетном режиме, он монополизирует консоль. Это по-видимому самый лучший способ тестирования Apache, но на практике такой режим не годится. Работает всего один экземпляр Apache, а не «бригада», как обычно, поэтому скорость очень низкая, даже при средней нагрузке. Кроме того, в этом режиме в работе браузера могут возникать таинственные паузы. Флаг -X предназначен только для отладки.
Настройка Apache
Web-пользователь и Web-группа
Поскольку возможность регистрации посторонних с правами привилегированных пользователей связана с возможным ущербом для безопасности, а в системе UNIX каждый запущенный процесс получает идентификатор пользователя, который запустил этот процесс, в Apache имеется возможность указать пользователя и группу, чьи идентификаторы получает демон httpd. Будучи запущенным с правами пользователя root (чтобы можно было использовать порт 80) Apache заменяет свой пользовательский идентификатор на -1. Во многих UNIX-системах это соответствует пользователю nobody из группы nogroup, т.е. абсолютно безвредному лицу. Однако, например, FreeBSD не понимает эту запись и выдает сообщение об ошибке. Выход в таком случае заключается в создании нового пользователя, который безопасно регистрируется без командного процессора, например, webuser из группы webgroup.
Чтобы поставить Apache в известность о существовании такого пользователя и группы, необходимо в файл httpd.conf добавить строки:
User webuser
Group webgroup
Название сервера
Директива ServerName задает хост-имя сервера, необходимое для переадресации URL. Для этого в файле httpd.conf необходимо вставить строку: ServerName <название серввра>
В качестве названия сервера вовсе не обязательно указывать реальное имя сервера. Можно вместо имени хоста указать "www", чтобы скрыть настоящее название машины. При этом необходимо, чтобы на DNS-сервере было также указано это имя.
Каталог документов
Наконец, для работы сервера, необходимо в файле конфигурации Apache указать название каталога документов, где располагаются непосредственно HTML-файлы Web-узла. По умолчанию таким каталогом является .. ./httpd/htdocs, но можно и определить другое местоположение HTML-документов, используя директиву:
DocumentRoot <путь_к_каталогу>
Права доступа
Для нормальной работы Apache необходимо правильно установить права доступа к файлам. В UNIX-системах есть три вида прав: на чтение, на запись и на вьшолнение. Они назначаются каждому объекту на трех уровнях: пользователь, группа и прочие (остальной мир). Посмотреть права на файл можно с помощью команды Is с флагом - l:
#ls -l
Эта команда выведет строку(строки) следующего формата:
rw-rw-r— 5 root bin 796 May 16 19:21 index.html
Первый символ «-» показывает, что это обычный файл. Далее следуют три поля прав доступа, каждое из которых представлено тремя символами. В данном примере они означают:
• Пользователь (root): чтение - да, запись - да, исполнение - нет.
• Группа (bin): чтение - да, запись - да, исполнение - нет.
• Прочие: чтение - да, запись - нет, исполнение - нет.
Если права доступа относятся к каталогу, то символ «х» - право на выполнение - означает «просмотр», т.е. разрешение видеть содержимое каталога и переходить на уровень ниже.
Поскольку экземпляр Apache, который пытается получить доступ к файлу из каталога .../htdocs принадлежит пользователю nobody и группе nogroup, а эти пользователь и группа не имеют родственных отношений с root и bin, необходимо, чтобы пользователи по категории «прочие» могли получить доступ к данному каталогу и единственными правами были «права на чтение».
Таким образом, злоумышленник, который пролез в пещеру к Apache, не сможет изменить или удалить файлы, а сможет только прочесть их.
Вообще говоря, все на Web-узле должно принадлежать пользователю, не являющемуся nobody (webuser) и группе, не являющейся nogroup (webuser).
Есть четыре вида файлов, к которым необходимо предоставить доступ пользователю nobody.
• каталоги;
• данные;
• программы;
• сценарии командного процессора;
Пользователь nobody должен иметь право просмотра всех необходимых каталогов, начиная с корневого каталога документов сервера. Если Apache должен получить доступ к каталогу, то для этого каталога и всех каталоге в его пути должны быть установлены права на просмотр (х) по категории прочие. Это делается командой:
# chmod о+х <каждый_каталог_в_пути>
Чтобы выдать перечень содержимого каталога, для конечного каталога должны быть установлены права на чтение по категории «прочие». Это делается командой:
# chmod о+x <конечный_каталог>
Разрешение на запись по этой категории, естественно не должно предоставляться:
# chmod o-w <конечный_каталог>
Чтобы обеспечить возможность использовать данные, находящиеся в файле, - а это касается, например, файлов типа .htaccess - для файла требуется установить разрешение на чтение по категории «прочие»: # chmod о+г <файл>
Разрешение на запись, как и выше, не предоставляется: # chmod o-w <файл>
Чтобы обеспечить запуск программы соответствующего исполняемого файла необходимо установить разрешение на выполнение его по категории «прочие»:
# chmod о+х <программа>
Чтобы обеспечить выполнение сценария командного процессора, для файла сценария должно быть установлено разрешение на чтение и выполнение по категории «прочие»:
#chmod o+rx <сценарий>