|
Bog BOS: Apache: HTTP сервер. Установка, настройка и русификация
|
Последнее изменение файла: 2009.10.29
Скопировано с www.bog.pp.ru: 2024.11.23
Bog BOS: Apache: HTTP сервер. Установка, настройка и русификация
Ссылки
Распространение и использование - бесплатное.
Текущая (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):
-
сносим httpd из поставки RHL (пакеты: mod_php3-manual, mod_php3-pgsql,
mod_php3-imap, mod_php3, mod_perl, apache)
-
берем архив apache_1.3.12rusPL29.4 у Лехи,
разархивируем его.
-
выбираем новое место для сервера /usr/local/apache
(классический Layout Apach)
-
в src/Configuration.tmpl
-
OPTIM=-O2
-
Rule SHARED_CORE=no
-
Rule SHARED_CHAIN=no
-
раскоментируем модули info, rewrite, auth_dbm, expires, headers;
закоментировать imap
-
тащим webcounter (2.2.5 на 6 марта 2000)
-
берем
архив
-
разворачиваем его
-
копируем
поддиректорию 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 параметр
(определение параметра для условно
конфигурации)
-
-L (выдать список директив для каждого
модуля)
-
-l (выдать список модулей)
-
-t (проверить
конфигурацию)
-
-X (отладочный режим)
-
-v (выдача краткой
информации о версии сервера)
-
-V (выдача полной
информации о версии сервера)
-
-S (разбор
конфигурации
виртуальных хостов)
-
-h (выдать синтаксис
командной строки)
-
libexec
-
man
-
man1 (htpasswd.1, htdiggest.1, dbmmanage.1)
-
man8 (httpd.8, ab.8, apachectl.8, logresolve.8, rotatelog.8, apxs.8)
-
conf
-
tables (табл
перекодировки для Russian Apache)
- access.conf - ныне пуст
- httpd.conf - основной файл конфигурации
- magic - для модуля mod_mime_magic (аналог команды file), не надо
реедактировать
- mime.types - добавил строчку для .bz2 (иначе происходит
перекодировка из русского в русский)
- srm.conf - ныне пуст
-
htdocs - пустой сервер
предоставляет
документацию по сервер
-
cgi-bin
-
icons - маленькие картинки
-
include - (.h для
компиляции
динамически
загружаемых модулей)
-
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 надо
подработать)
-
CustomLog /usr/local/apache/logs/main.combined_log combined
-
ServerSignature on
-
алиас и права для
директории иконок
-
ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/" и
права для директории (no override, no options)
-
только для тестового сервера: Redirect /~bog http://www.deol.ru/~bog
-
генерация индексов
директорий
-
FancyIndexing on
-
описание иконок для красивых
индексов и прочего
оформления (разные
модификации AddIcon)
-
всякие там Description, header и readme, indexignore и пр.
-
LanguagePriority ru en
-
AddType text/html .shtml (SSI)
-
AddHandler server-parsed .shtml (SSI)
-
исключения для разных плохо
сделанных броузеров
-
разрешаем server-status и server-info со
своего домена
-
описание
виртуальных хостов
-
.htaccess в
директориях
-
линк
-
конфигурация
дополнительных модулей
-
mod_cntr
-
mod_charset
(русификация)
-
включение кодировок и
добавление алиасов mac (x-mac-cyrillic) и lat (translit)
-
дырки в firewall
-
на входе в компьютер
-
для диалапных клиентов
-
для доступа извне
- PHP
- позже разобраться
Тестируем работоспособность (здесь не нужен 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 и ошибке в имени хоста.
Получать письмо от клиента каждый раз как он
ошибется в имени хоста - это перебор...
-
в src/Configure.tmpl
-
EXTRA_LIBS=-lc -lcrypt
-
CC=cc
-
OPTIM=-O (-O2 ведет к segmentation violation)
-
RANLIB=touch
(использование ranlib грохает ld)
-
Rule SHARED_CORE=no
-
Rule SHARED_CHAIN=no
-
раскоментируем модули info, proxy, rewrite, auth_dbm, cern_meta, expires,
headers
-
тащим 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 надо
подработать)
-
CustomLog /usr/local/apache/logs/main.combined_log combined
-
ServerSignature on
-
алиас и права для
директории иконок
-
ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/" и
права для директории (no override, no options)
-
только для тестового сервера: Redirect /~bog http://www.deol.ru/~bog
-
генерация индексов
директорий
-
FancyIndexing on
-
описание иконок для красивых
индексов и прочего
оформления (разные
модификации AddIcon)
-
всякие там Description, header и readme, indexignore и пр.
-
LanguagePriority ru en
-
AddType text/html .shtml (SSI)
-
AddHandler server-parsed .shtml (SSI)
-
исключения для разных плохо
сделанных броузеров
-
разрешаем server-status и server-info со
своего домена
-
виртуальный сервер под proxy
-
NameVirtualHost http-proxy.deol.ru:81 (?)
-
Port 81
-
ProxyRequests On
-
ограничения на доступ к
директории proxy: только изнутри
-
CacheRoot /usr/local/apache/proxy
-
CacheSize
сколько-не-жалко-килобайт
-
CacheGcInterval 4 (?)
-
CacheMaxExpire 24
-
CacheLastModifiedFactor 0.1 (?)
-
CacheDefaultExpire 4 (?)
-
NoCache
список-доменов-через-пробел
-
ErrorLog /usr/local/apache/logs/proxy_error_log
-
CustomLog /usr/local/apache/logs/proxy_combined_log combined
-
описание
виртуальных хостов
-
.htaccess в
директориях
-
линк
-
конфигурация
дополнительных модулей
-
изменяем /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 allow from {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 allow from
env=имя-переменной
доступ
разрешается только есл
определена
соответствующая переменна
окружения
-
D AllowOverride {None | All | AuthConfig |
FileInfo | Indexes | Limit | Options} -
какие директивы из .htaccess в данно
директории могут забивать оп
конфигурации сервера
-
D AuthName
домен-авторизации - какой домен
авторизации клиент должен
использовать пр
определении имени и пароля
-
DA deny from {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 deny from
env=имя-переменной
доступ не
разрешается есл
определена
соответствующая переменна
окружения
-
SV <Directory
имя-директирии
> ... < /Directory
>
внутр
определяются права и свойства данно
директории. В качестве имен
используется полный путь или wild-card как в shell.
-
SV < DirectoryMatch
регулярное-выражение
> ... < /DirectoryMatch
>
внутр
определяются права и свойства данно
директории. В качестве имен
используется
регулярное выражение.
-
SV DocumentRoot путь
определяет, где находится корень
документов сервера ил
виртуального сервера
-
SVDA ErrorDocument error-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 <Location URL
> ... < /Location
>
внутр
определются свойства и права доступа для
данного URL (полная строка или шаблон).
Использование директивы SetHandler внутр
скобок позволяет задать
специальн обработчик для данного URL.
-
SV <LocationMatch URL
> ... < /LocationMatch
>
внутр
определются свойства и права доступа для
данного URL
(регулярное выражение).
Использование директивы SetHandler внутр
скобок позволяет задать
специальн обработчик для данного URL.
-
SVDA Options [+|-]option ...
определяет
возможности сервера в данно
директор
-
ALL (по умолчанию) - все кроме MultiView
-
ExecCGI -
разрешается
выполнение CGI
-
FollowSymLinks - ходить по
символьным ссылка
-
Includes -
использовать SSI
-
IncludesNOEXEC -
использовать SSI, кроме exec и include CGI
-
Indexes -
генерировать листин
директории, есл
отсутствует файл index.html
-
MultiViews -
определять
представление ресурса в
зависмости от
предпочтений клиента (тип
носителя, язык, набор символов
кодировка) (не надо это включать)
-
SymLinksIfOwnerMatch -
следовать по
символьным ссылкам, только есл
владелец целевого файла
совпадает владельцем ссылки (а я-то, старый дурак,
═думал, что владелец ссылки всегда root)
-
DA order
порядок
определяет
очередность в которо
применяются директивы allow и deny
-
deny,allow - перв
применяются директивы deny, затем allow
(начальное состояние - доступ
разрешен)
-
allow,deny - перв
применяются директивы allow, затем deny
(начальное состояние -
запрещено)
-
mutual-failure - доступ только с тех
хостов, которые
перечислены в allow и не
перечислены в deny
-
DA require entity-name entity
entity...
како
пользователь может иметь достуо к
директор
-
user {userid}
только
пользователи с данными имена
-
group {group-name}
только
пользователи из данной групп
-
valid-user
любо
аутентифицированн
пользователь
-
DA satisfy [all|any]
если для
ограничения доступа
используется и имя/пароль и IP адрес, то
сервер будет требовать
соответствия обоих
критериев (all) или любого из них (any). По
умолчанию - all.
-
Общие
характеристик
сервера/виртуального сервера
-
SV ErrorLog filename |
syslog:facility
куда выдавать сообщения об ошибках.
-
SV Group группа
с правами какой unix-группы будет
обрабатываться запрос.
-
SVD HostNameLookups on | off | double
определять ли имя клиента по его IP-адресу (double -
сначала делается обратный, затем прямо запрос к DNS,
результат
сравниваются).
-
SVDA < IfDefine [!]parameter-name
> ... </IfDefine
>
условная
конфигурация, если параметр
(не)определен.
-
SVDA < IfModule [!]module-name
> ... </IfModulee
>
условная
конфигурация, если модуль
(не)включен в состав сервера.
-
S Include
имя-файла
вставить содержимое файла в состав
конфигурации в данном месте.
-
S KeepAlive on | off
обслуживать несколько запросов , не
прерывая
TCP-соединения с клиентом.
-
S KeepAliveTimeout seconds
-
SV LogLevel emerg | alert | crit | error
| warn | notice | info | debug
что писать в журнал ошибок
-
S MaxClients
максимальное-число-клиентов
-
S MaxKeepAliveRequests
максимальное-число-запросов-при-keep-alive
-
S MaxRequestsPerChild
максимальное-число-запросов-обслуживаемых-одним-процессом
-
S MaxSpareServers
максимальное-число-простаивающих-процессов
-
S MinSpareServers
минимальное-число-простаивающих-процессов
-
S Port
номер-порта
к какому порт
прислушиваться (по
умолчанию - 80).
-
SV RLimitCPU soft-limit ═max-resource-limit
задает
максимальное число секунд CPU для любого
процесса. Оба параметра могут быть числом ил
словом max
-
SV RlimitMEM soft-limit ═max-resource-limit
задает
максимальное число байт, которое может
использовать каждый процесс. Оба
параметра могут быть числом или словом max
-
SV RlimitNPROC soft-limit
═max-resource-limit
задает
максимальное число
процессов которое может
запустить каж
пользователь. Оба параметра могут быть числом ил
словом max
-
SV ServerAdmin email-address
-
SV ServerName
полное-доменое-имя
используется для redirect. По
умолчанию сервер пытается
определить его сам, но в Solaris лучше задать
вручную.
-
S ServerRoot
полное-имя-директории
задает место, где лежат все файл
сервера по умолчанию (и откуда
отсчитываются
относительные имена файлов)
-
SVDA ServerSignature Off | On | EMail
какую информацию включать в конце
документов,
генерируемых сервером (например,
сообщений об ошибках)
-
Off - никако
-
On - имя сервера и версия П
-
EMail - еще и почтовый адре
администратора
-
S ServerTokens Minimal|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 ServerType standalone | inetd
-
S StartServers number
сколько сыновних процессов
запускать при начальном старте
-
S TimeOut секунд
-
SVDA UseCanonicalName on|off
используется при генерации URL,
ссылающихся на этот же сервер
-
On -
использовать имя,
определенное в ServerName и Port
-
Off -
использовать параметры из запроса
пользователя
-
SV User uid
с правами какого
пользователя будет работать сервер
Виртуальные сервера
-
S NameVirtualHost
addr[:port]
привязывает
виртуальный хост к данно
адресу/порту (запросы на этот адрес будут
распределяться только между эт
виртуальными хостами)
-
V ServerAlias host1 host2 ...
задает
альтернативные имена для
виртуального хоста
-
V ServerPath путь
все запросы, URI которых
начинаются с путь будут
обслуживаться эт
виртуальным сервером (конечно, адрес и порт должн
соответствовать тоже)
-
S < VirtualHost
{адрес[:порт]}
> ... < /VirtualHost
>
это скобки,
определяющие описание
виртуального сервера. Адрес и порт
определяют адрес, по которому он будет
отзываться. Внутри можно
использовать любые
директивы,
позволяющие контекст V.
Преобразование адресов
-
SV Alias URL dirname-filename
запрос с URL (%
декодируются),
начинающегося с URL, будет
отображен на файл,
начинающийся с dirname-filename (м.б. вне DocumentRoot).
Доступ к dirname-filename
должен быть разрешен.
-
SV AliasMatch
регулярное-выражение dirname-filename
аналогично Alias, но
сравнение
производится в
соответств регулярн
выражением. Часть
регулярного выражения,
заключенная в скобки,
запоминается как
позиционный параметр и м.б.
вставлена в правую часть
(синтаксис как в sh)
-
SVDA Redirect [ status ] url-path
url
преобразование
%-декодированного иходного URL (url-path) ═в
результатирующий (url). Клиент
возвращается сообщение об ошибке и новый URL,
который он должен
запросить. Имеет больш
приоритет, чем Alias или ScriptAlias. url-path д.б.
абсолютным адресом. status (по
умолчанию temporary - код 302)
определяет код возврата:
-
permanent - ресур перемещен
навсегда (301)
-
temp - ресурс перемещен временно (302)
-
seeother - ресурс замещен (303)
-
gone - ресурс удален (410) (в этом случае новый URL д.б.
опущен)
-
SV RedirectMatch [ status ] regex
url
аналогично Redirect, но
сравнение
производится не на
совпадение начал, а по
соответствию URL от клиента
регулярному выражению. Строки,
соответствующие
подвыражениям в скобках ,
помещаются в
позиционные
переменные и м.б.
использован
аналогично shell.
-
SV ScriptAlias url-path
directory-filename
аналогично директиве Alias, но
дополнительно пометить
директорию как
содержащую CGI
-
SV ScriptAliasMatch regex
directory-filename
аналогично директиве AliasMatch, но
дополнительно пометить
директорию как
содержащую CGI
Преобразование
http-заголовков (в стиле
метафайла CERN и др.)
Безопасность
-
DA AuthGroupFile filename
определяет имя файла, в которо
хранится список групп
пользователей в формате: каждая строка
определяет группу и имеет вид:
имя-группы:
{имя-пользователя}
-
DA AuthUserFile filename
определяет имя файла, в которо
хранится список
пользователей в формате:
имя-пользователя:шифрованный-пароль
-
D AuthType {Basic | Digest ] - тип
аутентифика
-
DA AuthAuthoritative on | off
по умолчанию - on. Есл
установлено off, то проце
аутентифика
авторизации, в случае
отсутствия имен
пользователя в текущей базе данных,
обращаются к модуля
аутентификации нижнего уровня.
-
DA AuthDBMGroupFile filename
аналогично AuthGroupFile, но
использованием dbm (ключ - имя
пользователя, значение - список групп через
запятую)
-
DA AuthDBMUserFile filename
аналогично AuthUserFile, но
использованием dbm (ключ - имя
пользователя, значение -
шифрованный пароль). ═Если AuthDBMUserFile и AuthDBMGroupFile
указывают на один и тот же файл, то это
совмещенный файл (ключ - имя
пользователя, значение -
шифрованный пароль, за которым следует
двоеточие и список групп через
запятую).
-
DA AuthDBMAuthoritative on | off
по умолчанию - on. Есл
установлено off, то проце
аутентифика
авторизации, в случае
отсутствия имен
пользователя в текущей базе данных,
обращаются к модуля
аутентификации нижнего уровня.
-
DA AuthDigestFile filename
определяет файл с имена
пользователе
шифрованными паролями по
алгоритму MD5. Файл
создается утилитой htdigest
(исходники в
директории support). Вместо
AuthType Basic
надо указать
AuthType Digest
Индекс директории
(автоматическая генерация, если
отсутствует вручную
сделанный индексный файл и
разрешена Option Indexes)
-
SVDA AddAlt string file
file...
какую строчку текста
показывать вместо иконки, есл клиента
отключена загрузка картинок. file
задается суффиксом,
частичным именем файла или wild-card
-
SVDA AddAltByEncoding string
MIME-encoding MIME-encoding...
аналогично, но
определяется не по имени файла, а по
MIME-кодировке (типа x-compress).
-
SVDA AddAltByType string MIME-type
MIME-type ..
аналогично, но
определяется по MIME-тип
(например, text/html)
-
SVDA AddDescription string file
file...
текстовое описание файла. file
задается суффиксом,
частичным именем файла, wild-card или цел
именем.
-
SVDA AddIcon icon name
name ...
определяет какую картинк показать для файла,
соответствующего name. icon
имеет формат либо URL, либо в круглых
скобках
альтернативный текст и URL через
запятую. name
задается суффиксом,
частичным именем файла, wild-card или цел
именем.или ключевыми словами ^^DIRECTORY^^ и ^^BLANKICON^^.
-
SVDA AddIconByEncoding icon
MIME-encoding MIME-encoding ...
аналогично, но
определяется не по имени файла, а по
MIME-кодировке (типа x-compress).
-
SVDA AddIconByType icon MIME-type
MIME-type ...
аналогично, но
определяется по MIME-тип
(например, text/html)
-
SVDA DefaultIcon url
если никакая иконка не подошла, то будет
использоватся эта
-
SVDA DirectoryIndex local-url local-url
...
задает имя файла
(относительно
запрашиваемо
директории), в котором лежит индек
директории (по умолчанию - index.html)
-
SVDA FancyIndexing on|off
делать красивый индекс (
возможность
сортировки по столбцам)
-
SVDA HeaderName filename
в качестве заголовка индекса будет
вставлен указанный файл (сначала ищется файл filename.html,
затем просто filename).
-
SVDA IndexIgnore file file ...
список файлов, которые надо
скрывать. 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
-
SuppressHTMLPreamble -
подавить вставку заголовка пере
включением файла,
определенного по HeaderName
-
SuppressLastModified -
подавление колонки при fancy indexing
-
SuppressSize -
подавление колонки при fancy indexing
-
SVDA ReadmeName filename
в конец индекса будет вставлен
указанный файл (сначала ищется файл 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 ScriptLog filename - журнал ошибок
- S ScriptLogLength size -
максимальный размер журнала ошибок (по умолчанию - 10 МБ)
- S ScriptLogBuffer size - размер тела PUT или
POST (по умолчанию - 1024)
- SV SetEnv variable value -
установка переменных окружения перед запуском CGI
- SV PassEnv variable variable ...
передaча указанных переменных окружения на момент запуска httpd в CGI или
SSI
- SV UnsetEnv variable variable ...
удалить указанные переменные из окружения перед запуском CGI или SSI
- SSI
Карта,
разбираемая сервером, (image map) не
используется и не
описывается (пусть разбор идет только на
клиентской стороне).
Выдача информации о составе модуле
сервера (mod_info):
-
SVDA
обеспечение доступа к
информации (вместо /server-info можно
указать другой адрес,
рекомендуется
ограничить доступ):
< Location /server-info
>
SetHandler server-info
< /Location
>
-
SV AddModuleInfo module-name
string
срока будет разобрана как
HTML-документ и показана в поле
"дополнительная
информация о модуле"
Журналы (модуль mod_log_config; журнал ошибок
конфигурируется другими
средствами)
Каждый
виртуальный сервер может вест
ипроизвольное число журналов в
различных форматах.
Директивы
(рекомендуется
использовать только LogFormat для
определения формата и CustomLog для
создания журнала)
-
SV CookieLog filename
Только для
совместимости со старым модулем 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-заголовка
-
%f - имя файла
-
%{имя}e - значение
переменной
окружения.
-
%h - имя удаленного хоста
-
%a - адрес удаленного хоста
-
%{имя-заголовка}i - значение
заголовка запроса. Наиболее часто
используются (где взять весь
список?)
-
Referer - откуда была ссылка на
документ
-
User-agent - что сказал о себе броузер
-
%l - имя удаленного
пользователя (есл
задействован ident)
-
%{имя-заметки}n -
содержимое заметк указанным именем,
сгенеренной другим модуле
-
%{имя-заголовка}o - значение
заголовка ответа
-
%p -
канонический номер порта сервера
-
%P - pid процесса,
обслуживающего запро
-
%r - первая строка запроса
-
%s - статус запроса (ко возврата)
-
%t - время в CLF-формате
([day2d/month3l/year4d:hour2l:minute2l:second2l
zone], где zone в формате
[+|-]hour2dmin2d)
-
%{формат}t - время формат выдачи описан в strftime(3)
-
%u - имя
авторизованного
пользователя (если статус не равен 401)
-
%U -
запрошенный URL
-
%v -
канонический ServerName (как
сделать здесь имя
виртуального хоста?)
Русификация (mod_charset)
Занимается
перекодированием с русского на русский из
кодировки хранения в
кодировку пересылки (или из
полученной от
пользователя кодировки в
кодировку хранения).
Директивы
-
определение кодировки и таблиц
перекодировки
-
SV CharsetDecl
имя-кодировки ru [ S ] ( флаг S
подавляет выдачу charset=... клиенту)
-
SV CharsetRecodeTable
из-какой в-какую
имя-файла-с-таблицей [
имя-файла-с-обратной-таблицей ]
(обратная таблица может
создаваться
автоматически)
-
SV CharsetWideRecodeTable
из-какой в-какую
имя-файла-с-таблицей (для
перекодировок из символа в строку:
например, для
транслитерации)
-
SVDLA CharsetAlias
официальное-имя
синоним ...
(определение синонимов для имени
кодировки)
-
определение кодировки хранения (HTML/CGI/SSI)
-
SVDLA CharsetSourceEnc
имя-кодировки
-
SVDLA CharsetByExtension
имя-кодировки .ext1 ...
-
SVDLA CharsetProcessType mime-type
(какие типы файлы надо
обрабатывать; всегда
обрабатываются - text/*)
-
определение кодировки клиента
-
явно (по
HTTP-заголовкам Accept-Charset: или Accept: text/x-cyrillic-...)
-
SVDLA CharsetPriority
имя-кодировки1 ...
(определение
приоритета, если клиент задает
несколько Accept, при
равенстве
приоритетов - по порядку в
описании)
-
SVDLA CharsetBrokenAccept Agent-Substring
accept_charset_string
(игнорировать данный загловок Accept от
данного клиента -
использовать другия
механизмы для
определения типа
клиентской кодировки)
-
SVDLA CharsetSelectionOrder Rule1 ...
(определяет приоритет способов
определения кодировки клиента, по
умолчанию - 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 AddHandler strip-meta-http .ext1 ...
(удалять теги "META HTTP-EQUIV=... charset=..." из
HTML-файлов перед передачей их клиенту; не очень
хорошая идея -
конфликтует с другими
обработчиками, но как еще
бороться с FrontPage, который их
вставляет, и Netscape/IE, которые
встретов такую строчку в HTML-коде,
перестают обращать внимание на
HTTP-заголовок с правильно
выставленным charset.
Подробности
здесь)
-
SVDLA CharsetBadAgent
шаблон ...
(клиентским
программам,
подпадающим под шаблон, не будет
выдаваться строка charset= в
HTTP-заголовке Content-type)
-
SVDLA CharsetErrReject On | Off (что
делать, если клиент
запрашивает
неизвестную кодировку в Accept/Accept-charset:
выдавать сообщение об ошибке или (по
умолчанию) пытаться
определить "более
правильную" кодировку)
-
SVDLA CharsetUseMultiViews Off
-
SVDLA CharsetRecodeHeaders Off
(надеюсь, что в
заголовках русского текста не будет)
-
SVDLA CharsetDisable On | Off
(выключить работу модуля для данного
сервера/директории)
-
SVDLA CharsetRecodeFilenames On | Off
(перекодировать имена файлов; по
умолчанию включена!)
-
SVDLA CharsetOverrideExpires On | Off
(если включен - по
умолчанию - то заменять
заголовки Expires:,
сгенерированные другими модулями на свои)
-
SVDLA CharsetDisableForcedExpires On | 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 CharsetRecodeMultipartForms On (надо
выключить, если клиент передает с
помощью POST двоичные данные)
-
SVDLA CharsetDisableAcceptCharset Off
-
увеличение
кешируемости
-
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 до
перекодировки)
Переменные
окружения.
-
CHARSET="koi8-r" -
русификация
-
CHARSET_DETERMINED_BY="UserAgent" -
русификация
-
CHARSET_HTTP_METHOD="http://" -
русификация
-
CHARSET_SERVER_NAME="имя-определенное-по-IP:80" -
русификация
-
CHARSET_SERVER_PORT="80" -
русификация
-
DOCUMENT_ROOT="абсолютное-имя-директории-документов-виртуального-сервера"
-
GATEWAY_INTERFACE="CGI/1.1"
-
HTTP_ACCEPT="image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png,
*/*"
-
HTTP_ACCEPT_CHARSET="iso-8859-1,*,utf-8"
-
HTTP_ACCEPT_LANGUAGE="ru, en"
-
HTTP_CACHE_CONTROL="max-age=259200"
-
HTTP_CONNECTION="keep-alive"
-
HTTP_HOST="www.printhouse.ru" - если клиент
посылает поле HOST в запросе
-
HTTP_IF_MODIFIED_SINCE="Wednesday, 26-Jul-00 15:20:17 GMT; length=1437"
-
HTTP_USER_AGENT="Mozilla/4.05 [en] (X11; I; SunOS 5.5 sun4m)"
-
HTTP_VIA="1.0 acache.deol.ru:3129 (Squid/2.3.STABLE1)" - proxy
-
HTTP_X_FORWARDED_FOR="195.161.72.28" - proxy
-
PATH="директории, в которых ищутся
исполняемые программы"
-
QUERY_STRING=""
-
REMOTE_ADDR="клиент или прокси"
-
REMOTE_PORT="39885"
-
REQUEST_METHOD="GET"
-
REQUEST_URI="/cgi-bin/printenv"
-
SCRIPT_FILENAME=абсолютное имя файла"
-
SCRIPT_NAME="логическое имя объекта"
-
SERVER_ADDR="IP адрес"
-
SERVER_ADMIN="почтовый адрес
администратора сервера"
-
SERVER_NAME="имя-определенное-по-IP"
-
SERVER_PORT="80"
-
SERVER_PROTOCOL="HTTP/1.0"
-
SERVER_SIGNATURE="Apache/1.3.12 Server at dual.deol.ru Port
80\n"
-
SERVER_SOFTWARE="Apache/1.3.12 (Unix) rus/PL29.4"
-
SOURCE_CHARSET="windows-1251" -
русификация
-
URL_COUNT="2" - значение счетчика
-
URL_COUNT_DB="абсолютный адрес файла, в
котором хранятся счетчики"
-
URL_COUNT_DINDEX="index.html index.htm"
-
URL_COUNT_FACEDIR="абсолютный адрес
директории с
картинками для цифр"
-
URL_COUNT_RESET="Wednesday, 26-Jul-00 19:20:17 MSD"
-
URL_COUNT_TIMEFMT="%A, %d-%b-%y %T %Z"
-
VRL_COVNT="II"
|
Bog BOS: Apache: HTTP сервер. Установка, настройка и русификация
|
Copyright © 1996-2024 Sergey E. Bogomolov; www.bog.pp.ru