Anshlag - калужское объединение друзей - туристов. Отдых, путешествия, туризм.

Anshlag - калужское объединение друзей - туристов. Отдых и путешествия по Карелии, туризм, водные походы. Отчеты о походах, рассказы туристов, новости туризма. Форум, гостевая, походные фотографии.



  
 Пятница, 19 июля 2019, 06:36:24 

Bog BOS: FTP-сервер ProFTPD: установка, настройка и использование
4 Bog BOS: Apache: HTTP сервер. Установка, настройка и русификация

Быстрый переход ...

» 1 Стандарты, относя...
» 2 Bog BOS: FTP серв...
» 3 Заплатка
» 4 Bog BOS: Apache: ...
» 5 Bog BOS: Дублиров...
» 6 Bog BOS: FTP-серв...
» no modules loaded f...

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 а внутри сервера, надо задать хендлер

SetHandler server-cntr


SetHandler server-cntr-debug

в поставку входит 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 (использование: )
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 - добавил строчку для .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 надо подработать)
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
на входе в компьютер
для диалапных клиентов
для доступа извне
PHP
позже разобраться
DSO
suexec
perl
Тестируем работоспособность (здесь не нужен 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 >
внутр определяются права и свойства данно директории. В качестве имен используется полный путь или 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 (полная строка или шаблон). Использование директивы SetHandler внутр скобок позволяет задать специальн обработчик для данного URL.
SV ... < /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 > ...
условная конфигурация, если параметр (не)определен.
SVDA < IfModule [!]module-name > ...
условная конфигурация, если модуль (не)включен в состав сервера.
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"


Прокомментировать
Хотите оставить свои комментарии? Зарегистрируйтесь на нашем сайте!

 
(c) Anshlag 2002 - 2008