Bog BOS: Apache: HTTP сервер. Установка, настройка и руссификация


Bog BOS: Apache: HTTP сервер. Установка, настройка и руссификация
body {
background: #ffffff;
color: #000000;
margin-left: 4px;
margin-top: 4px;
}
a:link { color: #0000ff; }
a:active { color: #ff0000; }
a:visited { color: #0000aa; }
h1 { text-align: center; }
.h2 {
padding-left:10pt;
color:#ffffff;
font-weight:bold;
font-size:larger;
}
.h2r {
background: #0086b2;
color:#ffffff;
font-weight:bold;
font-size:larger;
}
.abzac {
padding-left: 25pt;
text-align:justify;
}
auto
koi
win
alt
mac
lat
Bog BOS: Apache: HTTP сервер. Установка, настройка и руссификация
@
Карта сайта
News
Автора!
apache
inn
MySQL
nntpcache
Cyrus IMAP
sendmail
Squid
ssh
syslog
tacacs
wu-ftpd
xntpd
Последнее изменение файла: 20010404
Bog BOS: Apache: HTTP сервер. Установка, настройка и руссификация
Ссылки
основной сервер "фонда apache"
собственно httpd-сервер
документация
уголок разработчиков
почтовый архив
русификация сервера
FLY
Russian Apache и
обсуждение
Eugene Crosser
news
модули для apache
счетчик
"почти
официальные" модули
еженедельник
Apache и SSL
официальный сайт
Stronghold
replay
Распространение и использование - бесплатное.
Текущая (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.
Другие формы цифр можно взять
здесь
преобразовать с помощью 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)
czech
russian
russian2
access.conf - ныне пуст
httpd.conf - основной файл
конфигурации
magic - для модуля mod_mime_magic (анало
команды file), не надо
реедактировать
mime.types - не надо
редактировать
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 надо
подработать)
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 в
директориях
линк
share
cgi-bin
icons
htdocs
конфигурация
дополнительных модулей
mod_cntr
mod_charset
(руссификация)
включение кодировок и
добавление алиасов mac (x-mac-cyrillic) и lat (translit)
дырки в firewall
на входе в компьютер
для диалапных клиентов
для доступа извне
позже
разобраться
DSO
suexec
perl
php3
Тестируем
работоспособность (здесь не нужен 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 в
директориях
линк
share
cgi-bin
icons
htdocs
var
log
proxy
конфигурация
дополнительных модулей
mod_cntr
mod_charset
изменяем /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 и др.)
AddType httpd/send-as-is asis
файлы, имеющие суффикс .asis,
посылаются "как есть", т.е.
считается что
http-заголовки уже лежат в файле
генерировать их не надо
SVDA MetaFiles on/off -
включить/выключить
преобразование для данно директор
SVDA MetaDir directory-name - имя
директории, в которой лежат
метафайлы (по умолчанию .web внутр
текущей директории)
SVDA MetaSuffix suffix -
суффикс, котор
добавляется к имени файла, чтобы найт
метафайл для него (по
умолчанию .meta)
SVDA ExpiresActive on|off -
посылать ли заголовок Expire (срок
хранения документа в кэше)
SVDA ExpiresByType MIME-type
однобуквенный-код-и-число-секунд
ко
M - время последне
модификации файла
A - время доступа к файл
можно также
использовать следующую строку в
кавычках:
access/modification [plus ]
{число
years|months|weeks|days|hours|minutes|secunds}
SVDA ExpiresDefaults MIME-type
однобуквенный-код-и-число-секунд
SVDA Header [ set | append | add ]
header
value-в-кавычках
заменить/слить/добавить
заголовок
SVDA Header unset header
удалить заголовок (есл
несколько заголовков с одним именем, то
удаляется только первый)
Безопасность
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"
auto
koi
win
alt
mac
lat
Bog BOS: Apache: HTTP сервер. Установка, настройка и руссификация
@
Карта сайта
News
Автора!
apache
inn
MySQL
nntpcache
Cyrus IMAP
sendmail
Squid
ssh
syslog
tacacs
wu-ftpd
xntpd
Copyright © 1996-2001 Sergey E. Bogomolov
(КГБ знает все, даже то что у Вас на диске ;)
содержание | 2 | рецепты блюд
Используются технологии uCoz