Текущая (6 марта 2000) версия 1.3.12,
русификация 1.3.12 PL29.4 взята на Russian Apache.
Тестируем
работоспособность (здесь не нужен mod_rcs,
вместо него работает extra/mod_charset;
прокси больше не
используется)(Intel, RedHat Linux 6.0, ядро 2.11, egcs-2.91.66):
копируем
поддиректорию cntr в
директорию apache/src/modules
запоминаем, что configure надо
запускать с ключом
--activate-module=src/modules/cntr/mod_cntr.c
или в src/Configuration.tmpl
добавляем строку
AddModule modules/cntr/mod_cntr.o
В httpd.conf добавить (можно также в .htaccess)
AddModule mod_cntr.c
CounterAutoAdd On
CounterFile имя-файла
CounterTimeFmt
строка-для-форматирования-даты # по
умолчанию "%A, %d-%b-%y %T %Z"
CounterFaceDir
имя-директории-где-цифры-лежат
# отныне цифр
разворачиваются не через cgi-bin а внутри
сервера, надо задать хендлер
<Location /server-cntr>
SetHandler server-cntr
</Location>
<Location
/server-cntr-debug>
SetHandler server-cntr-debug
</Location>
в поставку входит show-digits.cgi,
который показывает список шрифтов. Его надо
установить.
в поставку входят шрифты default и tiny.
Другие формы цифр можно было взять на
www.digitimania.com и
преобразовать с помощью renamegif.pl. У меня их
достаточно осталось от
предыдущей версии.
преобразовать старые счетчики с помощью updatedbm.pl
(не
работает)
создать собственно файлы, в которых будут
храниться счетчики, с
соответствующими правами (nobody:nobody). Не
давать же nobody
возможность создавать файлы в этой
директории!.
новый формат
использования в html-тексте
img
src="/server-cntr/path-info?face=facename_амперсенд_ndigit=n_амперсенд_fcount=n_амперсенд_trans
где
path-info - имя файла, счетчик
которого надо вставить (раньше было url=)
face - имя шрифта (раньше было type=)
ndigit - число цифр (раньше было length=)
fcount - фиктивное значение
счетчика (раньше было count=)
trans - прозрачный фон
Переменные для SSI и CGI
(использование: <!--#echo var="URL_COUNT"-->)
URL_COUNT - счетчик числа
обращений к файл
URL_COUNT_RESET - время запуска
счетчика
URL_COUNT_DB - имя
счетчиков
URL_COUNT_TIMEFMT - формат для времен
запуска
URL_COUNT_FACEDIR -
директория со шрифтами
URL_COUNT_DINDEX - имя файла для
индекса директорий (index.html)
Есть версия count.cgi на perl
(требуется GD.pm and URI::URL (comes with libwww) )
Ручной доступ к базе данных
счетчиков: countctl.pl (не
работает)
countctl.pl [ -cdrv URL ] filename
-c добавить URL
-d удалить
-r сбросить
-s установить (берет с stdin или
запрашивает в диалоге)
-v посмотреть
без флагов выдает дамп всей БД в
формате: URL счетчик
время-старта
если надо, то очистка от старой версии (make clean)
./configure
make
make install (в /usr/local/apache),
используется Layout Apache; нужны права root; не
портит старые файлы
настройки и т.п. (но
запихивает образцовый сайт - свою
документацию - в htdocs) ═
bin
htpasswd - создание и
изменение плоских файлов для
базововой
аутентификации (формат
имя:шифрованный-пароль)
htdiggest - создание и
изменение плоских файлов для digest
аутентификации
dbmmanage - создает и изменяет файлы для
аутентификации
пользователей в формате DBM
ab - httpd benchmark
apachectl -
управление сервером. Команды:
start
stop
restart
fullstatus (нужен lynx и mod_status)
status (-//-)
graceful (restart без
обрывания текущих
соединений, журнал
закрываются не сразу)
configtest
help
logresolve - если журнал
собирался без
разрешения имен хостов по их IP
адресам, эта утилита
позволяет сделать это в фоновом режиме.
rotatelog - режет журнал, если задать: TransferLog "|rotatelogs
/path/to/logs/access_log
интервал-времени"
apxs -
динамическое создание и загрузка
модулей в apache сервер
httpd - собственно сервер (сигнал HUP -
заново прочесть
конфигурацию, TERM -
завершить свою работу и всех сыновей - в
версии 1.1 не работало)
-d ServerRoot
-f config
-C directive (выполнить
директиву до чтения файла
конфигурации)
-c directivе (-//- после -//- )
-D параметр
(определение параметра для условно
конфигурации)
magic - для модуля mod_mime_magic (аналог команды file), не надо
реедактировать
mime.types - добавил строчку для .bz2 (иначе происходит
перекодировка из русского в русский)
srm.conf - ныне пуст
htdocs - пустой сервер
предоставляет
документацию по сервер
manual
images
misc
mod
vhosts
cgi-bin
printenv
test-cgi
icons - маленькие картинки
include - (.h для
компиляции
динамически
загружаемых модулей)
xml
logs
proxy
конфигурируем сервер (все что по
умолчанию, особенно всякие
глупости типа имен файлов, не
упоминается)
httpd.conf
глобальные параметры
ServerType standalone
ServerRoot "/usr/local/apache"
PidFile /usr/local/apache/log/httpd.pid
ResourceConfig /dev/null
AccessConfig /dev/null
Timeout 120
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
MinSpareServers 5
MaxSpareServers 10
StartServers 5
MaxClients 150
MaxRequestsPerChild 0 (если будет
отъедать память как в Solaris, то
поставить 30)
Listen адрес-хоста:80 (именно адрес, ибо у меня
несколько IP-адресов на хост)
ExtendedStatus On
главный сервер (он же
определяет параметры по
умолчанию для
виртуальных хостов)
#Port 80 (ибо есть Listen)
User nobody
Group nobody
ServerAdmin bog@deol.ru.
ServerName
имя-без-точки-в-конце
DocumentRoot "/usr/local/apache/htdocs"
для директории / задаем Options FollowSymLinks и AllowOverride None
для основной
директории задаем Options Indexes FollowSymLinks IncludesNOEXEC, AllowOverride
None,
ограничения на доступ: order allow,deny и allow from all
UserDir public_html и права доступа
DirectoryIndex index.html index.htm
AccessFileName .htaccess
запрет на чтение .htaccess
UseCanonicalName on
HostnameLookups on
(отключить для
оптимизации, но тогда
поднастроить обработку
журналов)
ErrorLog /usr/local/apache/logs/main.error_log
LogLevel info (м.б.
уменьшить до notice или warn потом)
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %v"
combined (%v
добавляем, чтобы явно знать какой
виртуальный хост обработал заявку, но он
вместо имени хоста из запроса
подставляет результат reverse DNS IP-адреса
сервера; может %{HTTP_HOST}e
поставить, но некоторые клиенты не
посылают поле HOST?, - analog надо
подработать)
Тестируем работоспособность (здесь не нужен mod_rcs,
вместо него работает extra/mod_charset)(SPARC, Solaris 2.5, gcc 2.6.2):
берем архив apache_1.3.4rusPL27.4 у Лехи,
разархивируем его.
сносим старый httpd
выбираем новое место для сервера /usr/local/apache
небольшие
исправления:
возвращаем обратно выдачу
подробного сообщения об ошибке 500 в src/main/http_protocol.c
(ap_send_error_response). Ради
усиления
безопасности вместо
подробного сообщения
выдавался совет
обратиться к
администратору. К
сожалению, тот же текст
выдавется в случае
использования proxy и ошибке в имени хоста.
Получать письмо от клиента каждый раз как он
ошибется в имени хоста - это перебор...
тащим webcounter (2.2.4 на 21 января 1999) -
описан выше
./configure
make (не забудь /usr/ccs/bin в PATH)
make install (в /usr/local/apache),
используется Layout Apache, а не GNU; описан выше
конфигурируем сервер (все что по
умолчанию, особенно всякие
глупости типа имен файлов, не
упоминается)
httpd.conf
глобальные параметры
ServerType standalone
ServerRoot "/usr/local/apache"
PidFile /usr/local/apache/log/httpd.pid
Timeout 120
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 15
MinSpareServers 5
MaxSpareServers 10
StartServers 5
MaxClients 150
MaxRequestsPerChild 30
Listen адрес-хоста:80 (именно адрес, ибо у меня
несколько IP-адресов на хост)
Listen
адрес-хоста:3346 (для proxy)
ExtendedStatus On
главный сервер (он же
определяет параметры по
умолчанию для
виртуальных хостов)
#Port 80 (ибо есть Listen)
User nobody
Group nobody
ServerAdmin bog@deol.ru.
ServerName
имя-без-точки-в-конце
DocumentRoot "/usr/local/apache/htdocs"
для директории / задаем Options FollowSymLinks и AllowOverride None
для основной
директории задаем Options Indexes FollowSymLinks IncludesNOEXEC, AllowOverride
None
ограничения на доступ: order allow,deny и allow from all
UserDir public_html
DirectoryIndex index.html index.htm
AccessFileName .htaccess
запрет на чтение .htaccess
UseCanonicalName on
HostnameLookups on
ErrorLog /usr/local/apache/logs/main.error_log
LogLevel info (м.б.
уменьшить до notice или warn потом)
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %v"
combined (%v
добавляем, чтобы явно знать какой
виртуальный хост обработал заявку - analyze надо
подработать)
изменяем /etc/rc2.d/S99httpd, чтобы он
запускал apachectl (start, stop, restart)
если не хватает
дескрипторов файлов по
умолчанию (64), то в apachectl
вставить
ulimit -S -n 1024
ядро Solaris имеет
ограничение 1024 fd, stdlib - 255.
Рекомендуется
поиграться с -DHIGH_SLACK_LINE=256 в EXTRA_CFLAGS пр
сборке сервера. Как только сервер
требуется 256й файл, так
начинаются глюки (я так понимаю, что
обращение к двум файлам идет через один
дескриптор), причем понять что эти глюки из-за
недостатка
дескрипторов
невозможно. Например, у меня не
записывался файл httpd.pid, хотя сам файл
создавался или не работал /cgi-bin/count ил
выдавалась ошибка "forbidden access" или еще
что-нибудь, причем proctool
преспокойно
показывает, что fd = 1024.
задаем права на
исполнение тех файлов в cgi-bin,
которые нужны
поменять в crontab
процедуру регулярной очистки httpd на
использование apachectl
когда все будет хорошо - удалить старый
сервер
Конфигурация
Конфигурация сервера задается в файлах httpd.conf, srm.conf, access.conf
и .htaccess. Раньше в httpd.conf
хранилась общая
конфигурация сервера, в srm.conf
описание доступных ресурсов, в access.conf - права
доступа к ресурсам. В нынешней версии любая
директива
конфигурации может лежать в любом из этих
файлов, так что можно
представить себе один
виртуальный файл конфигура
сконкатенированный из этих трех (httd + srm + access).
Начиная с версии 1.3.4 все
директивы
конфигурации слиты в httpd.conf. Файлы .htaccess
могут лежать в
директориях
переопределять права доступа и другие
параметры данных
директорий. Некоторые модули могут иметь свои
отдельные файл
конфигурации (например, mod_charset
требует файлов, хранящих табл
перекодировки).
Сервер apache разбит на модули (в т.ч. core),
каждая директива
определяет поведение одного из модулей и имеет
смысл только если этот модуль включен пр
сборке.
Контексты:
S сервер - директива
действует на поведение сервера целиком
V виртуальный хост -
действует, если запрос касается данного
виртуального хоста (внутри скобок VirtualHost)
D директория -
определяет свойства только данной
директории (внутри скобок Directory)
A .htaccess -
определяет свойства только данной
директории
(определяется в файле .htaccess)
Порядок применения директив
определения свойств и прав доступа к
объекту (все, кроме Directory,
применются по порядку; Directory
применяются от
кратчайшего пути к само длинному; секции
внутри VirtualHost
применяются после тех, которые
снаружи):
секция Directory (кроме
регулярных выражений) и .htaccess (.htaccess
перебивает Directory, если
разрешено AllowOverride)
секция DirectoryMatch и Directory
регулярные выражения
секции Files и FilesMatch
секции Location и LocationMatch
Права доступа, свойства объекта и где его взять
DA allowfrom {host}
определяет с каких адресов будет доступ к
данной директории
all - со всех
доменное имя (м.б.
частичное) - с тех хостов, имя которых
заканчивается на эту строку
полный IP адре
частичный IP адрес - первые 1, 2 или 3 байта IP
адреса
a.b.c.d/e.f.g.h - network/netmask пара
a.b.c.d/nnn - network/netpart-bits
DA allowfromenv=имя-переменной
доступ
разрешается только есл
определена
соответствующая переменна
окружения
D AllowOverride {None | All | AuthConfig |
FileInfo | Indexes | Limit | Options} -
какие директивы из .htaccess в данно
директории могут забивать оп
конфигурации сервера
D AuthNameдомен-авторизации - какой домен
авторизации клиент должен
использовать пр
определении имени и пароля
DA denyfrom {host}
определяет с каких адресов не будет
доступа к данно директор
all - со всех
доменное имя (м.б.
частичное) - с тех хостов, имя которых
заканчивается на эту строк
полный IP адре
частичный IP адрес - первые 1, 2 или 3 байта IP
адреса
a.b.c.d/e.f.g.h - network/netmask пара
a.b.c.d/nnn - network/netpart-bits
DA denyfromenv=имя-переменной
доступ не
разрешается есл
определена
соответствующая переменна
окружения
SV <Directoryимя-директирии> ... < /Directory>
внутр
определяются права и свойства данно
директории. В качестве имен
используется полный путь или wild-card как в shell.
SV <DirectoryMatchрегулярное-выражение> ... < /DirectoryMatch>
внутр
определяются права и свойства данно
директории. В качестве имен
используется
регулярное выражение.
SV DocumentRootпуть
определяет, где находится корень
документов сервера ил
виртуального сервера
SVDA ErrorDocumenterror-code document
какой документ выдавать в случае ошибка
указанным кодом (есл
начинается с кавычек, то далее идет текст
сообщения; если со слеша, то далее идет
локальный URL - в том числе CGI, в
который передаются
описывающие ситуа
переменные окружения; можно
использовать полную форму URL)
SVA <Filesимя-файла> ...
< /Files>
внутр
определяются права и свойства файлаов
соответствующим basename.
качестве имен
используется basename или wild-card как в shell.
Может находиться внутри секции Directory или .htaccess.
SVA <FilesMatchимя-файла> ...
< /FilesMatch>
внутр
определяются права и свойства файлаов
соответствующим basename.
качестве имен
используется
регулярное выражение Может
находиться внутри секции Directory или .htaccess.
SVDA <Limit{метод}> ...
< /Limit>
это скобки для группы директив
управляющих доступом. Метод - GET, POST, PUT, DELETE, CONNECT or OPTIONS.
Если директив
управления доступо
используются вне скобок Limit, то он
используются для
ограничения любого метода доступа.
SV <LocationURL> ... < /Location>
внутр
определются свойства и права доступа для
данного URL (полная строка или шаблон).
Использование директивы SetHandler внутр
скобок позволяет задать
специальн обработчик для данного URL.
SV <LocationMatchURL> ... < /LocationMatch>
внутр
определются свойства и права доступа для
данного URL
(регулярное выражение).
Использование директивы SetHandler внутр
скобок позволяет задать
специальн обработчик для данного URL.
SVDA Options [+|-]option ...
определяет
возможности сервера в данно
директор
ALL (по умолчанию) - все кроме MultiView
ExecCGI -
разрешается
выполнение CGI
FollowSymLinks - ходить по
символьным ссылка
Includes -
использовать SSI
IncludesNOEXEC -
использовать SSI, кроме exec и include CGI
MultiViews -
определять
представление ресурса в
зависмости от
предпочтений клиента (тип
носителя, язык, набор символов
кодировка) (не надо это включать)
SymLinksIfOwnerMatch -
следовать по
символьным ссылкам, только есл
владелец целевого файла
совпадает владельцем ссылки (а я-то, старый дурак,
═думал, что владелец ссылки всегда root)
DA orderпорядок
определяет
очередность в которо
применяются директивы allow и deny
deny,allow - перв
применяются директивы deny, затем allow
(начальное состояние - доступ
разрешен)
allow,deny - перв
применяются директивы allow, затем deny
(начальное состояние -
запрещено)
mutual-failure - доступ только с тех
хостов, которые
перечислены в allow и не
перечислены в deny
DA requireentity-nameentityentity...
како
пользователь может иметь достуо к
директор
user {userid}
только
пользователи с данными имена
group {group-name}
только
пользователи из данной групп
valid-user
любо
аутентифицированн
пользователь
DA satisfy [all|any]
если для
ограничения доступа
используется и имя/пароль и IP адрес, то
сервер будет требовать
соответствия обоих
критериев (all) или любого из них (any). По
умолчанию - all.
Общие
характеристик
сервера/виртуального сервера
SV ErrorLogfilename |
syslog:facility
куда выдавать сообщения об ошибках.
SV Group группа
с правами какой unix-группы будет
обрабатываться запрос.
SVD HostNameLookupson | off | double
определять ли имя клиента по его IP-адресу (double -
сначала делается обратный, затем прямо запрос к DNS,
результат
сравниваются).
SVDA <IfDefine [!]parameter-name> ... </IfDefine>
условная
конфигурация, если параметр
(не)определен.
SVDA <IfModule [!]module-name> ... </IfModulee>
условная
конфигурация, если модуль
(не)включен в состав сервера.
S Includeимя-файла
вставить содержимое файла в состав
конфигурации в данном месте.
S KeepAliveon | off
обслуживать несколько запросов , не
прерывая
TCP-соединения с клиентом.
S KeepAliveTimeoutseconds
SV LogLevelemerg | alert | crit | error
| warn | notice | info | debug
что писать в журнал ошибок
S MaxClientsмаксимальное-число-клиентов
S MaxKeepAliveRequestsмаксимальное-число-запросов-при-keep-alive
S MaxRequestsPerChildмаксимальное-число-запросов-обслуживаемых-одним-процессом
S MaxSpareServersмаксимальное-число-простаивающих-процессов
S MinSpareServersминимальное-число-простаивающих-процессов
S Portномер-порта
к какому порт
прислушиваться (по
умолчанию - 80).
SV RLimitCPUsoft-limit ═max-resource-limit
задает
максимальное число секунд CPU для любого
процесса. Оба параметра могут быть числом ил
словом max
SV RlimitMEMsoft-limit ═max-resource-limit
задает
максимальное число байт, которое может
использовать каждый процесс. Оба
параметра могут быть числом или словом max
SV RlimitNPROCsoft-limit
═max-resource-limit
задает
максимальное число
процессов которое может
запустить каж
пользователь. Оба параметра могут быть числом ил
словом max
SV ServerAdminemail-address
SV ServerNameполное-доменое-имя
используется для redirect. По
умолчанию сервер пытается
определить его сам, но в Solaris лучше задать
вручную.
S ServerRootполное-имя-директории
задает место, где лежат все файл
сервера по умолчанию (и откуда
отсчитываются
относительные имена файлов)
SVDA ServerSignatureOff | On | EMail
какую информацию включать в конце
документов,
генерируемых сервером (например,
сообщений об ошибках)
Off - никако
On - имя сервера и версия П
EMail - еще и почтовый адре
администратора
S ServerTokensMinimal|OS|Full
что сервер сообщает о себе в
заголовке Server:
(примерный текст):
Minimal - Server: Apache/1.3.0
OS - Server: Apache/1.3.0 (Unix)
Full - Server: Apache/1.3.0 (Unix) PHP/3.0 MyMod/1.2
S ServerTypestandalone | inetd
S StartServersnumber
сколько сыновних процессов
запускать при начальном старте
S TimeOutсекунд
SVDA UseCanonicalNameon|off
используется при генерации URL,
ссылающихся на этот же сервер
On -
использовать имя,
определенное в ServerName и Port
Off -
использовать параметры из запроса
пользователя
SV Useruid
с правами какого
пользователя будет работать сервер
Виртуальные сервера
S NameVirtualHostaddr[:port]
привязывает
виртуальный хост к данно
адресу/порту (запросы на этот адрес будут
распределяться только между эт
виртуальными хостами)
V ServerAliashost1host2 ...
задает
альтернативные имена для
виртуального хоста
V ServerPathпуть
все запросы, URI которых
начинаются с путь будут
обслуживаться эт
виртуальным сервером (конечно, адрес и порт должн
соответствовать тоже)
S <VirtualHost
{адрес[:порт]}
> ... </VirtualHost>
это скобки,
определяющие описание
виртуального сервера. Адрес и порт
определяют адрес, по которому он будет
отзываться. Внутри можно
использовать любые
директивы,
позволяющие контекст V.
Преобразование адресов
SV AliasURLdirname-filename
запрос с URL (%
декодируются),
начинающегося с URL, будет
отображен на файл,
начинающийся с dirname-filename (м.б. вне DocumentRoot).
Доступ к dirname-filename
должен быть разрешен.
SV AliasMatchрегулярное-выражениеdirname-filename
аналогично Alias, но
сравнение
производится в
соответств регулярн
выражением. Часть
регулярного выражения,
заключенная в скобки,
запоминается как
позиционный параметр и м.б.
вставлена в правую часть
(синтаксис как в sh)
SVDA Redirect [ status ] url-pathurl
преобразование
%-декодированного иходного URL (url-path) ═в
результатирующий (url). Клиент
возвращается сообщение об ошибке и новый URL,
который он должен
запросить. Имеет больш
приоритет, чем Alias или ScriptAlias. url-path д.б.
абсолютным адресом. status (по
умолчанию temporary - код 302)
определяет код возврата:
permanent - ресур перемещен
навсегда (301)
temp - ресурс перемещен временно (302)
seeother - ресурс замещен (303)
gone - ресурс удален (410) (в этом случае новый URL д.б.
опущен)
SV RedirectMatch [ status ] regexurl
аналогично Redirect, но
сравнение
производится не на
совпадение начал, а по
соответствию URL от клиента
регулярному выражению. Строки,
соответствующие
подвыражениям в скобках ,
помещаются в
позиционные
переменные и м.б.
использован
аналогично shell.
SV ScriptAliasurl-pathdirectory-filename
аналогично директиве Alias, но
дополнительно пометить
директорию как
содержащую CGI
SV ScriptAliasMatchregexdirectory-filename
аналогично директиве AliasMatch, но
дополнительно пометить
директорию как
содержащую CGI
Преобразование
http-заголовков (в стиле
метафайла CERN и др.)
AddType httpd/send-as-is asis
файлы, имеющие суффикс .asis,
посылаются "как есть", т.е.
считается что
http-заголовки уже лежат в файле
генерировать их не надо
SVDA MetaFileson/off -
включить/выключить
преобразование для данно директор
SVDA MetaDirdirectory-name - имя
директории, в которой лежат
метафайлы (по умолчанию .web внутр
текущей директории)
SVDA MetaSuffixsuffix -
суффикс, котор
добавляется к имени файла, чтобы найт
метафайл для него (по
умолчанию .meta)
SVDA ExpiresActiveon|off -
посылать ли заголовок Expire (срок
хранения документа в кэше)
SVDA ExpiresByTypeMIME-typeоднобуквенный-код-и-число-секунд
ко
M - время последне
модификации файла
A - время доступа к файл
можно также
использовать следующую строку в
кавычках: access/modification [plus ]
{числоyears|months|weeks|days|hours|minutes|secunds}
SVDA Headerunsetheader
удалить заголовок (есл
несколько заголовков с одним именем, то
удаляется только первый)
Безопасность
DA AuthGroupFilefilename
определяет имя файла, в которо
хранится список групп
пользователей в формате: каждая строка
определяет группу и имеет вид: имя-группы:
{имя-пользователя}
DA AuthUserFilefilename
определяет имя файла, в которо
хранится список
пользователей в формате:
имя-пользователя:шифрованный-пароль
D AuthType {Basic | Digest ] - тип
аутентифика
DA AuthAuthoritativeon | off
по умолчанию - on. Есл
установлено off, то проце
аутентифика
авторизации, в случае
отсутствия имен
пользователя в текущей базе данных,
обращаются к модуля
аутентификации нижнего уровня.
DA AuthDBMGroupFilefilename
аналогично AuthGroupFile, но
использованием dbm (ключ - имя
пользователя, значение - список групп через
запятую)
DA AuthDBMUserFilefilename
аналогично AuthUserFile, но
использованием dbm (ключ - имя
пользователя, значение -
шифрованный пароль). ═Если AuthDBMUserFile и AuthDBMGroupFile
указывают на один и тот же файл, то это
совмещенный файл (ключ - имя
пользователя, значение -
шифрованный пароль, за которым следует
двоеточие и список групп через
запятую).
DA AuthDBMAuthoritativeon | off
по умолчанию - on. Есл
установлено off, то проце
аутентифика
авторизации, в случае
отсутствия имен
пользователя в текущей базе данных,
обращаются к модуля
аутентификации нижнего уровня.
DA AuthDigestFilefilename
определяет файл с имена
пользователе
шифрованными паролями по
алгоритму MD5. Файл
создается утилитой htdigest
(исходники в
директории support). Вместо AuthTypeBasic
надо указать AuthTypeDigest
Индекс директории
(автоматическая генерация, если
отсутствует вручную
сделанный индексный файл и
разрешена Option Indexes)
SVDA AddAltstringfilefile...
какую строчку текста
показывать вместо иконки, есл клиента
отключена загрузка картинок. file
задается суффиксом,
частичным именем файла или wild-card
SVDA AddAltByEncodingstringMIME-encodingMIME-encoding...
аналогично, но
определяется не по имени файла, а по
MIME-кодировке (типа x-compress).
SVDA AddAltByTypestringMIME-typeMIME-type ..
аналогично, но
определяется по MIME-тип
(например, text/html)
SVDA AddDescriptionstringfilefile...
текстовое описание файла. file
задается суффиксом,
частичным именем файла, wild-card или цел
именем.
SVDA AddIconiconnamename ...
определяет какую картинк показать для файла,
соответствующего name. icon
имеет формат либо URL, либо в круглых
скобках
альтернативный текст и URL через
запятую. name
задается суффиксом,
частичным именем файла, wild-card или цел
именем.или ключевыми словами ^^DIRECTORY^^ и ^^BLANKICON^^.
SVDA AddIconByEncodingiconMIME-encodingMIME-encoding ...
аналогично, но
определяется не по имени файла, а по
MIME-кодировке (типа x-compress).
SVDA AddIconByTypeiconMIME-typeMIME-type ...
аналогично, но
определяется по MIME-тип
(например, text/html)
SVDA DefaultIconurl
если никакая иконка не подошла, то будет
использоватся эта
SVDA DirectoryIndexlocal-urllocal-url
...
задает имя файла
(относительно
запрашиваемо
директории), в котором лежит индек
директории (по умолчанию - index.html)
SVDA FancyIndexingon|off
делать красивый индекс (
возможность
сортировки по столбцам)
SVDA HeaderName filename
в качестве заголовка индекса будет
вставлен указанный файл (сначала ищется файл filename.html,
затем просто filename).
SVDA IndexIgnorefilefile ...
список файлов, которые надо
скрывать. file
задается суффиксом,
частичным именем файла, wild-card или цел
именем.
SVDA IndexOptions [+|-]option
[+|-]option ... (оп
сливаются с учетом знаков)
FancyIndexing - делать
красивый индекс (
возможность
сортировки по столбцам)
IconHeight[=pixels]
IconsAreLinks - для fancy indexing
IconWidth[=pixels]
NameWidth=[n | *] - ширина
колонки (* -
использовать длину самого
длинного имени файла)
ScanHTMLTitles -
вытаскивать описание файла из HTML-текста
(только fancy indexing)
SuppressColumnSorting - имена
колонок не будут вызывать
сортировку индекса при fancy indexing
SuppressDescription - не
включать колонк описанием файла при fancy indexing
SuppressLastModified -
подавление колонки при fancy indexing
SuppressSize -
подавление колонки при fancy indexing
SVDA ReadmeNamefilename
в конец индекса будет вставлен
указанный файл (сначала ищется файл filename.html,
затем просто filename).
Вызов CGI, SSI и т.п.
CGI: любой файл с MIME-типом application/x-httpd-cgi
(директива AddType или ScriptAlias) ═или хендлером cgi-script
(директива addHandler) будет обрабатываться модулем cgi.
Перед вызовом будут добавлены переменные окружения, определенные
стандартом, а
также DOCUMENT_ROOT, REMOTE_HOST, REMOTE_IDENT и REMOTE_USER
(если эта информация доступна).
S ScriptLogfilename - журнал ошибок
S ScriptLogLengthsize -
максимальный размер журнала ошибок (по умолчанию - 10 МБ)
S ScriptLogBuffersize - размер тела PUT или
POST (по умолчанию - 1024)
SV SetEnvvariablevalue -
установка переменных окружения перед запуском CGI
SV PassEnvvariablevariable ...
передaча указанных переменных окружения на момент запуска httpd в CGI или
SSI
SV UnsetEnvvariablevariable ...
удалить указанные переменные из окружения перед запуском CGI или SSI
Карта,
разбираемая сервером, (image map) не
используется и не
описывается (пусть разбор идет только на
клиентской стороне).
Выдача информации о составе модуле
сервера (mod_info):
SVDA
обеспечение доступа к
информации (вместо /server-info можно
указать другой адрес,
рекомендуется
ограничить доступ): < Location/server-info
> SetHandlerserver-info </Location>
SV AddModuleInfomodule-namestring
срока будет разобрана как
HTML-документ и показана в поле
"дополнительная
информация о модуле"
Журналы (модуль mod_log_config; журнал ошибок
конфигурируется другими
средствами)
Каждый
виртуальный сервер может вест
ипроизвольное число журналов в
различных форматах.
Директивы
(рекомендуется
использовать только LogFormat для
определения формата и CustomLog для
создания журнала)
SV CookieLogfilename
Только для
совместимости со старым модулем mod_cookie.
Рекомендуется
использовать mod_usertrack и CustomLog.
SV CustomLogфайл-или-каналформат-или-имя-формата
Вести журнал
определенного формата в
указанном файле или подать на вход
программе. Имя файла либо
полностью, либо
относительно ServerRoot. Канал
записывается как символ "|", за которым идет имя
запускаемой команды. Журнал
подается на
стандартный вход команды, которая
запускается с теми же правами, что и httpd. Имя
формата
определяется в LogFormat
SV LogFormatформат
[имя-формата]
Определить формат указанным именем. По
умолчанию - "%h %l %u %t \"%r\" %s %b" - так
называемый Common Log Format (CLF)
SV TransferLogфайл-или-канал
аналогично CustomLog, но формат
определяется в
предыдущей LogFormat без имени.
Формат журнала: каждый запрос к сервер
порождает строку в журнале,
состоящую из слов (token),
разделенных пробелами. Если слово пусто, то оно
записывается как знак минус. Если слово
содержит пробелы, то оно должно
заключаться в кавычки( это надо само
предусмотреть при задании формата). Пр
задании формата
используются
литеральные символы, которые
копируются в журнал
директивы, которые
начинаются со знака "процент"
завершаются
однобуквенным имене
директивы. Между ними может стоять
условие в виде списка кодов
завершения через запятую (м.б.
предваренных
восклицательным знаком) - если условие не
выполняется, то вместо token
записывается минус.
Директива в описании формата
замещается
соответствующим значением.
Директивы:
%b - количество посланных байт, кроме
HTTP-заголовка
%{имя-заголовка}i - значение
заголовка запроса. Наиболее часто
используются (где взять весь
список?)
Referer - откуда была ссылка на
документ
User-agent - что сказал о себе броузер
%l - имя удаленного
пользователя (есл
задействован ident)
%{имя-заметки}n -
содержимое заметк указанным именем,
сгенеренной другим модуле
%{имя-заголовка}o - значение
заголовка ответа
%p -
канонический номер порта сервера
%P - pid процесса,
обслуживающего запро
%r - первая строка запроса
%s - статус запроса (ко возврата)
%t - время в CLF-формате
([day2d/month3l/year4d:hour2l:minute2l:second2lzone], где zone в формате
[+|-]hour2dmin2d)
%{формат}t - время формат выдачи описан в strftime(3)
%u - имя
авторизованного
пользователя (если статус не равен 401)
%U -
запрошенный URL
%v -
канонический ServerName (как
сделать здесь имя
виртуального хоста?)
Русификация (mod_charset)
Занимается
перекодированием с русского на русский из
кодировки хранения в
кодировку пересылки (или из
полученной от
пользователя кодировки в
кодировку хранения).
Директивы
определение кодировки и таблиц
перекодировки
SV CharsetDecl
имя-кодировки ru [ S ] ( флаг S
подавляет выдачу charset=... клиенту)
SV CharsetWideRecodeTable
из-какойв-какуюимя-файла-с-таблицей (для
перекодировок из символа в строку:
например, для
транслитерации)
SVDLA CharsetAliasофициальное-имясиноним ...
(определение синонимов для имени
кодировки)
определение кодировки хранения (HTML/CGI/SSI)
SVDLA CharsetSourceEncимя-кодировки
SVDLA CharsetByExtensionимя-кодировки.ext1 ...
SVDLA CharsetProcessTypemime-type
(какие типы файлы надо
обрабатывать; всегда
обрабатываются - text/*)
определение кодировки клиента
явно (по
HTTP-заголовкам Accept-Charset: или Accept: text/x-cyrillic-...)
SVDLA CharsetPriorityимя-кодировки1 ...
(определение
приоритета, если клиент задает
несколько Accept, при
равенстве
приоритетов - по порядку в
описании)
SVDLA CharsetBrokenAcceptAgent-Substringaccept_charset_string
(игнорировать данный загловок Accept от
данного клиента -
использовать другия
механизмы для
определения типа
клиентской кодировки)
SVDLA CharsetSelectionOrderRule1 ...
(определяет приоритет способов
определения кодировки клиента, по
умолчанию - Portnumber Hostname URIHostname EnvVariable Dirprefix Useragent)
Portnumber (по номеру порта, см. CharsetByPort)
Hostname (если
каноническое имя хоста
начинается с имени
кодировки или его синонима, то
выбирается эта кодировка)
URIHostname (если имя в
заголовке Host:
начинается с имени
кодировки или его синонима, то
выбирается эта кодировка)
EnvVariable (по
переменной FORCE_CHARSET,
определенной внешними модулями,
например, module_rewrite)
Dirprefix (по началу имени
директории)
Useragent (по
HTTP-заголовку User-Agent, см. CharsetAgent)
SVDLA CharsetDefaultимя-кодировки
(принимается в качестве
кодировки клиента, если все
остальные способы не помогли)
SVDLA CharsetByPort
имя-кодировкиномер-порта
SVDLA CharsetAgent
имя-кодировкишаблон... (не
регулярные выражения, а просто
подстроки)
дополнительная обработка
специфических случаев
SVDLA AddHandlerstrip-meta-http.ext1 ...
(удалять теги "META HTTP-EQUIV=... charset=..." из
HTML-файлов перед передачей их клиенту; не очень
хорошая идея -
конфликтует с другими
обработчиками, но как еще
бороться с FrontPage, который их
вставляет, и Netscape/IE, которые
встретов такую строчку в HTML-коде,
перестают обращать внимание на
HTTP-заголовок с правильно
выставленным charset.
Подробности
здесь)
SVDLA CharsetBadAgentшаблон ...
(клиентским
программам,
подпадающим под шаблон, не будет
выдаваться строка charset= в
HTTP-заголовке Content-type)
SVDLA CharsetErrRejectOn | Off (что
делать, если клиент
запрашивает
неизвестную кодировку в Accept/Accept-charset:
выдавать сообщение об ошибке или (по
умолчанию) пытаться
определить "более
правильную" кодировку)
SVDLA CharsetUseMultiViews Off
SVDLA CharsetRecodeHeaders Off
(надеюсь, что в
заголовках русского текста не будет)
SVDLA CharsetDisableOn | Off
(выключить работу модуля для данного
сервера/директории)
SVDLA CharsetRecodeFilenamesOn | Off
(перекодировать имена файлов; по
умолчанию включена!)
SVDLA CharsetOverrideExpiresOn | Off
(если включен - по
умолчанию - то заменять
заголовки Expires:,
сгенерированные другими модулями на свои)
SVDLA CharsetDisableForcedExpiresOn | Off
(если выключен - по
умолчанию - то сервер выдает
заголовок "Expires: 1 Jan 1970" дабы
документ не
кешировался, если его
кодировка
определилась по User-Agent или Accept-charset.
Рекомендуется
использовать для форм или frameset: иначе Back
будет возвращать на пустую форму)
SVDLA CharsetRecodeMethodsInметод1 ...
(включить обработку запроса для данного
метода: GET, POST, PUT, ALL (по
умолчанию), NONE)
SVDLA CharsetRecodeMethodsOutметод1 ...
(включить обработку ответа для данного
метода: GET, POST, PUT, ALL (по
умолчанию), NONE)
SVDLA CharsetRecodeMultipartFormsOn (надо
выключить, если клиент передает с
помощью POST двоичные данные)
SVDLA CharsetDisableAcceptCharsetOff
увеличение
кешируемости
SVDLA CharsetAutoRedirect -
позволяет обеспечить
кешируемость
документов с помощью
автоматического
перенаправления запроса на
документ с тем же
содержимым, но с "жестким"
определением кодировка (по порту, по имени хоста,
директории, а не User-Agent или Accept. Это
обеспечивает
кеширование, но порождает лишний запрос.
Проблемы также с
директивой Redirect в случае с
определением кодировки по номеру порта (CharsetSoftRedirect,
CharsetSoftRedirectPermanent, CharsetSoftRedirectTemp).
SVDLA CharsetNormalizeToURL
SVDLA CharsetNormalizeTypes
SVDLA CharsetRedirectFromOriginalURL
SVDLA CharsetNoAutoRedirectForDefaultCharset
Дополнительные
переменные (для CGI, других модулей и SSI)
CHARSET (кодировка клиента)
SOURCE_CHARSET (CGI д.олжен
выводить в той же
кодировке)
CHARSET_SERVER_NAME
CHARSET_SERVER_PORT
CHARSET_HTTP_METHOD (строка "http://" или "https://", т.е.
полный URL запроса
восстанавливается как ${CHARSET_HTTP_METHOD}${CHARSET_SERVER_NAME}${REQUEST_URI}
CHARSET_SAVED_QUERY_STRING (QUERY_STRING до
перекодировки)
CHARSET_SAVED_PATH_INFO (PATH_INFO до
перекодировки)