Apache. Полезные советы
Ограничение доступа к файлу
Как правило, Directory применяется только к каталогам. Ограничение доступа к отдельным файлам директивой Проблема с NCSA .htaccess файлами В учебник NCSA по поводу .htaccess файлов приведен пример подобный этому:
Это предназначено для ограничения доступа основанного на адресе браузера и здесь не требуется запрос для авторизации остальных пользователей. Проблема в том что Apache выводит запрос для ввода пароля, который не проходит, потому что тот не был установлен. В Apache наличие Auth* директив необязательно. Это правится удалением строк содержащих Auth* .
Как увеличить скорость Apache Имееется некоторые пути которые позволяют управлять производительностью
сервера. Один быстрый и эффективный путь - это уменьшение количества
.htaccess файлов которые опрашиваются при каждом запросе
.
Всякий раз, когда Apache обрабатывает запрос, опрашиваются файлы .htaccess
которые определяют разрешение доступа и где могут быть устанавливлены другие
параметры (например AddType). Обычно, выше корня сервера не будет файлов .htaccess, но Apache
все еще должен проверить файловую систему, чтобы в этом удостовериться.
Это может быть устранено, используя уловку, что опция AllowOverride
установлена в None, и Apache не будет производить проверку для файлов
.htaccess . Второй раздел Directory включает AllowOverrides, так, чтобы файл .htaccess
были обработаны снова. 'All' может быть заменена любой другой необходимой для Вас.
Если Вы имеете web документы в различных каталогах помимо корня документа,
Вы будете должны включить файлы .htaccess в также и в них (если необходимо).
Например, если Вы используете UserDir, чтобы разрешить доступ к
файлам в домашних каталогах, Вы будете должны установить подходящий
AllowOverride (и возможно другие ограничения) подобно этому:
Смена log файлов без завершения транзакций Посылка родительскому процессу USR1 делающая закрытие текущих log файлов,с
последующим их открытием без потери соединения в настоящее время в разработке.
. Это будет использовано вместо HUP сигнала в каком-нибудь скрипте для смены
log-ов. Этот скрипт должен будет во первых переименовать файл текущего
лога в файл с новым именем (log остается открытым на этой стадии).
. Затем он должен послать сигнал USR1 родительскому процессу Apache.
Родительский процесс должен сообщить дочерним о завершении после обработки
своего текущего запроса и открыть log файл для новых дочерних процессов
(так как старые файлы были переименованы, открытые файлы будут созданы заново).
Поскольку старые дочерние процессы заканчивают их текущие запросы, они должны закрыть
обработчики старых log файлов и завершить работу.
Когда все дочерние процессы умерли, Вы можете безопасно обрабатывать
старые log-и (например, сжимая их).Так как Вы не можете точно знать когда дочерние
процессы завершают свою работу, лучшим путем является перевести скрипт в режим
ожидания после посылки сигнала USR1.
Альтернативным путем для смены log-ов является посылка log сообщений
програме по вашему выбору через потоки. Эта програма может решить, каким образом
и когда менять log файлы. Програмы которые могут быть полезны для этого
доступны на cronolog
(не входит в Apache).
Использование одного конфигурационного файла * Apache начинался с использованием трех различных конфигурационных файлов
(srm.conf, access.conf и httpd.conf ). Тем не менее все они идентичные. Таким образом
, вся конфигурация помещена в один файл - httpd.conf (который читается
первым. Этот файл включает директивы
Запуск CGI програм с правами прочих пользователей CGI програмы всегда запускаются
с правами пользователя что и Apache сервер. Это устанавливается директивой
User в конфигурационном файле, в основном это обычный пользователь
, как например 'www', или 'nobody'.
В большинстве случаях это достаточно, так как CGI скрипты должны запускаться
с малыми привелегиями, чтобу исключить опасность разрушения системы.
Тем не мение, в некоторых случаях нужно запускать CGI програмы с правами
других пользователя. Например:
Способность для запуска CGI програм с правами прочих пользователей
относится к 'running setuid', после чего файловая система Unix способна запустить
програму с правами прочих пользователей .Самая большая проблема с наличием
setuid средства CGI на web сервере - защита.
Програма suEXEC включенная в Apache предоставляет один из методов для запуска
CGI програм с правами прочих пользователей.
Игнорирование файлов Некоторые файлы, которые вероятно никогда не должны запрашиваться пользователем:
файлы, называемые .htaccess, .htpasswd, *.pl, * ~ и так далее. Это может
быть сделано, закрыв доступ к этим файлам, использующим раздел
. Например
Создание HTML сценариев Легкий путь для добавления новых возможностей сервера без слишком большого
програмирования это использование "включаемых HTML".
Это закрытая сторона сервера, которая позволяет Вам использовать переменные,
условные выражения, циклы и так далее.
Подобно SSI, эти сценарии исполняются
на стороне сервера и работают со всеми браузерами. Эти дополнительные включения
в HTML сценарии снова доступны: SSI (часть Apache);
NeoScript (прилинкован
к apache как модуль);
PHP.
Принудительное выполнение
обработчиков или mime типов Новые директивы были добавлены, чтобы вынудить все файлы в указанном
каталоге быть обработанными данным обработчиком, или быть возвращенным
с указанным типом.
Чтобы устанавливать обработчик, используйте
SetHandler, и устанавливайте mime тип используя ForceType.
Обратите внимание, что эти директивы вынуждают данный тип или обработчик
применяться к всем файлам в разделе, независимо от расширения, отображающего
правила.
Например, каталог может использовать
"ForceType applicaton/octet-stream" в .htaccess чтобы передать браузеру
сведения, что файл нужно сохранить, а не попытаться отобразить на экране. Быстрые Вопросы
AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName EnterPassword
AuthType Basic
При этом проверяются и обрабатывает файлы .htaccess в том же самом каталоге
что и запрашиваемый файл, а также во всех родительских каталогах.
Например, если Вы запрашиваете URL /docs/about.html
и Ваш корневой документ /usr/local/etc/httpd/htdocs,
Apache пробует обрабатывать файлы .htaccess
во всех этих каталогах:
/
/usr
/usr/local
/usr/local/etc
/usr/local/etc/httpd
/usr/local/etc/httpd/htdocs
/usr/local/etc/httpd/htdocs/docs
Так для каталога ' / ' AllowOverride Вы установите в None и включите
AllowOverride с Вашими необходимыми параметрами для каталога
/usr/local/etc/httpd/htdocs.
Например, следующий код
в access.conf ускорил бы Apache:
AccessConfig /dev/null
ResourceConfig /dev/null
что предотвращаает сообщения о пропуске srm.conf и access.conf файлов.
Нужно быть очень осторожным, чтобы программа, выполняющая setuid
не может быть вызвана, для нанесения повреждений системе.
Наличие setuid программы в системе может быть опасно, особенно, если бы Вы
не доверяете всем другим пользователям в системе (который имел место бы с
обоими пример выше). Риск состоит в том, что другие пользователи могут
выполнять setuid программу вручную (из командной строки) и давать команды,
которые заставят исполнить эти нежелательные действия. Риск при использовании setuid программ
известен Unix администраторам системы, но многие администраторы сети не
имеют так большого опыта Unix или setuid программирования .
Или, все файлы в каталоге могут быть обработаны как программы CGI
Используйте директиву "Listen".
Используйте "name-базированные виртуальные сервера" в соответствии со спецификацией HTTP/1.1
.Пока это не работает со всеми браузерами в настоящее время, директивы ServerPath и ServerAlias
могут быть использованы, чтобы ваш сайт работоспособным для старых браузеров.
Да, Используйте анонимный authentication модуль, mod_auth_anon
Rewrite модуль позволяет переводить URLs в прочие URLs имена файлов.
Используйте "Script PUT cgi-script" для вызова CGI програм включающие PUT запросы.
Да, это можно уже в 1.2.
Нет.
Это происходит вследствие ошибке в Netscape когда используется директива.
Keep-Alives должно быть выключено на сервере. В Apache 1.2,
используется следующая директива:
BrowserMatch Mozilla/2 nokeepalive