С оригинальным текстом можно ознакомиться тут.
и тут.
Русский перевод HTTPD.CONF
2.0.х Apache Configuration
File
В переводе применяются следующие соглашения и сокращения:
конфиг, конфиг-файл
|
конфигурационный файл
|
errlog, error-файл
|
файл, содержащий сообщения об ошибках
|
log, лог, лог-файл
|
файл, в котором ведется журнал системы
(или какой-то ее компоненты)
|
default, дефолт (дефолтное, и т.д.)
|
что-либо (значение, действие, компонента), действующее «по
умолчанию» - т.е. «автоматически», если явно ничего не задано
|
инстанция (процесса, программы)
|
одна отдельная копия программы (или процесса) из
множества параллельно запущенных копий одной
и той же программы (процесса)
|
(sic)
|
примечание переводчика о том, что в этом месте в
оригинале возможно допущена ошибка, или неточная/неудачная/неясная формулировка
Поскольку это перевод, а не статья, то исправление
последних не входит в компетенцию переводчика.
Следует обратиться к документации для полной ясности
в этих случаях.
|
пп
|
примечание переводчика (некоторые пояснения по
тексту)
|
тайм-аут
|
истекание срока какого-либо ожидаемого события или
действия, просроченность
|
content-negotiation
|
динамическое определение содержимого - выбор одного
из многих существующих на сервере вариантов
документа, подлежащего выдаче, исходя из разных
параметров запроса (или диалога с клиентом)
|
agent, агент
|
браузер, или другая программа-клиент, пославшая
запрос серверу
|
referer
|
документ (или его URL), по ссылке из которого сделан
тот запрос, к которому это значение относится
|
персистентное соединение (persistent connection, keep-alive)
|
тип виртуального соединения между сервером и
клиентом, при котором сервер может обслуживать более
одного запроса от одного и того же клиента в рамках
одного и того же соединения; т.е. которое не
завершается сразу, как только сервер обслужил тот
первый запрос клиента, ради которого данное
соединение было установлено, а ждет поступления
дальнейших запросов по тому же каналу
|
#-------------------------------------------------------
# Основан на конфигурационных файлах сервера NCSA,
# написанных Rob McCool.
#
# Это главный конфиг-файл сервера Apache,
# содержащий директивы, управляющие
# работой сервера. За более подробной информацией об этих директивах,
# обращайтесь по адресу <URL:http://httpd.apache.org/docs-2.0/>
#
# Не стоит читать приведенные здесь команды, не вникая в их суть. Здесь
# они служат лишь в качестве примера или шпаргалки. Если вы не
# уверены - обращайтесь к онлайновой документации. Вы предупреждены.
#
# Конфигурационные директивы сгруппированы в три основные разделы :
#
# 1. Директивы, управляющие серверным процессом Apache в целом
# («глобальная среда»).
#
# 2. Директивы, определяющие параметры «главного»
# или дефолтного сервера,
# который отвечает на запросы, не обрабатываемые каким-либо
# виртуальным хостом. Эти директивы также задают дефолтные
# установки для всех виртуальных хостов.
#
# 3. Установки для виртуальных хостов, позволяющие единым серверным
# процессом Apache обрабатывать веб-запросы, на самом деле
# адресованные различным хостам (по имени хоста или по IP).
#
# Наименования конфиг- и лог-файлов : Если имя файла начинается с "/" (или c
# "диск:/" под Win32) - сервер использует явно указанный путь. Если же имя
# НЕ начинается с "/", то к нему префиксируется значение ServerRoot.
# Т.о., если ServerRoot="/usr/local/apache", то "logs/foo.log" сервер
# интерпретирует как "/usr/local/apache/logs/foo.log"
#
#
# ПРИМЕЧАНИЕ: При определении имен файлов необходимо использовать прямые
# слэши вместо обратных (т.е. "c:/apache" вместо "c:apache").
# Если диск не указан, по умолчанию используется тот, на котором размещен
# Apache.exe. Для однозначности, все же, рекомендуется в абсолютных путях
# всегда четко указывать диск.
#
#
#
### Раздел 1: Глобальная среда
#
# Директивы в этом разделе задают общие параметры работы Apache, такие, как,
# например, максимальное число одновременных запросов или
# месторасположение конфиг файлов.
#
# ServerRoot: Вершина дерева директорий, в которых содержатся конфиг-, лог- и
# error-файлы.
#
# ПРИМЕЧАНИЕ : Если это дерево будет располагаться на томе монтируемой
# файловой системы NFS (или на другом сетевом ресурсе),
# просьба прочесть описание директивы LockFile
# (по адресу <URL:http://httpd.apache.org/docs-2.0/mod/core.html#lockfile>)
# - во избежание массы проблем.
#
# В конце строки добавлять слэш НЕ следует.
#
ServerRoot "E:/Apache2"
#
# ScoreBoardFile: Файл для хранения информации внутреннего процесса сервера.
# Если не указан (по дефолту не указан), то эта информация хранится в
# неименованном разделе общей памяти, и не доступна посторонним программам.
# Если же файл указан, то он должен быть уникальным для каждой отдельной
# инстанции Apache. Этот файл должен располагаться на МЕСТНОМ диске.
#
#ScoreBoardFile logs/apache_runtime_status
#
# Файл записи идентификационного номера процесса (PID) сервера при запуске.
#
PidFile logs/httpd.pid
#
# Timeout: Время ожидания в секундах, прежде чем попытки приема или отправления
# выдают сообщение о тайм-ауте.
#
Timeout 300
#
# KeepAlive: Допускаются ли персистентные соединения (см. примечания).
# Для запрета укажите "Off".
#
KeepAlive On
#
#
# MaxKeepAliveRequests: Максимальное количество запросов при одном
# персистентном соединении. Значение 0 снимает ограничения. Для максимального
# быстродействия рекомендуем высокое значение.
#
MaxKeepAliveRequests 100
#
# KeepAliveTimeout: Время ожидания (в секундах) следующего запроса от того же
# клиента в рамках одного персистентного соединения
#
KeepAliveTimeout 15
#
#
# Server-Pool Size Regulation (MPM specific)
#
# Установка размеров серверного пула. Параметры данного подраздела
# меняются в зависимости от конкретного модуля мультизадачного режима
# (MPM - Multi-Processing Module), который, в свою очередь, меняется в
# зависимости от конкретной базовой ОС.
#
# WinNT MPM
# ThreadsPerChild: constant number of worker threads in the server process
# MaxRequestsPerChild: maximum number of requests a server process serves
#
# WinNT MPM : Мультизадачный модуль для Win32
# ThreadsPerChild: Постоянное число рабочих нитей (тредов) в серверном(sic)
# процессе
# MaxRequestsPerChild: Максимальное количество запросов, обслуживаемых
# серверным(sic) процессом
#
# (В обоих случаях, речь, на самом деле, идет о дочерних процессах сервера,
# а не о самом серверном процессе. Дело в том, что в случае Win32, который
# как раз здесь рассматривается, запускается один лишь единственный дочерний
# процесс, поэтому для WinNT_MPM эти понятия, в некоторой степени,
# совпадают -пп)
#
<IfModule mpm_winnt.c>
ThreadsPerChild 250
MaxRequestsPerChild 0
</IfModule>
#
# Listen: Позволяет привязать Apache к конкретным адресам IP и/или портам,
# помимо(sic) дефолтных. См. также директиву <VirtualHost>.
#
# Следует поменять это на конкретные адреса IP (как показано ниже), чтобы
# Apache не "прилипал" ко всем привязанным адресам (0.0.0.0)
#
# (Автор здесь немного противоречит себе. Возможно, правильнее второй абзац,
# а первый просто остался по наследству от предыдущих версий. Следует
# отметить, что в отличии от предыдущих версий, директива Listen теперь
# является обязательной - без нее Apache стартовать не будет -пп).
#
#Listen 12.34.56.78:80
Listen 80
#
#
# Поддержка динамических, разделяемых объектов (DSO, Dynamic Shared Object)
#
# Для того, чтобы использовать модули, созданные как DSO, следует поместить
# здесь соответствующие строки с директивой “LoadModule», чтобы команды этого
# модуля были доступны ДО обращения к ним. Статически скомпилированные модули
# (выявляемые по команде “httpd –l”) в этом не нуждаются.
#
# Пример:
# LoadModule foo_module modules/mod_foo.so
#
LoadModule access_module modules/mod_access.so
LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
LoadModule asis_module modules/mod_asis.so
LoadModule auth_module modules/mod_auth.so
#LoadModule auth_anon_module modules/mod_auth_anon.so
#LoadModule auth_dbm_module modules/mod_auth_dbm.so
#LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule autoindex_module modules/mod_autoindex.so
#LoadModule cern_meta_module modules/mod_cern_meta.so
LoadModule cgi_module modules/mod_cgi.so
#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so
LoadModule dir_module modules/mod_dir.so
LoadModule env_module modules/mod_env.so
#LoadModule expires_module modules/mod_expires.so
#LoadModule file_cache_module modules/mod_file_cache.so
#LoadModule headers_module modules/mod_headers.so
LoadModule imap_module modules/mod_imap.so
LoadModule include_module modules/mod_include.so
#LoadModule info_module modules/mod_info.so
LoadModule isapi_module modules/mod_isapi.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule mime_module modules/mod_mime.so
#LoadModule mime_magic_module modules/mod_mime_magic.so
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule negotiation_module modules/mod_negotiation.so
#LoadModule rewrite_module modules/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so
#LoadModule speling_module modules/mod_speling.so
#LoadModule status_module modules/mod_status.so
#LoadModule unique_id_module modules/mod_unique_id.so
LoadModule userdir_module modules/mod_userdir.so
#LoadModule usertrack_module modules/mod_usertrack.so
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
#LoadModule ssl_module modules/mod_ssl.so
#
# Директива ExtendedStatus определяет, будет ли Apache выдавать подробную
# информацию о состоянии (ExtendedStatus On), или только общую справку
# (ExtendedStatus Off), при обращении к функции "server-status". Значение по
# умолчанию - Off.
#
#ExtendedStatus On
#
#
#
### Раздел 2: Конфигурация "главного" (дефолтного) сервера
#
# Директивы этого раздела устанавливают значения, используемые "главным
# сервером", который отвечает на запросы, не обрабатываемые виртуальными
# хостами. Эти значения также задают дефолты для любых последующих
# контейнеров <VirtualHost> в этом файле.
#
# Любые из этих директив могут быть включены в контейнер <VirtualHost>; в таком
# случае дефолтные установки будут переопределены для этого виртуального хоста.
#
# ServerAdmin: Ваш адрес, по которому следует направлять сообщения о проблемах
# с сервером. Этот адрес появится на некоторых сгенерированных сервером
# страницах, таких, как сообщения об ошибках. Пример: admin@your-domain.com
#
ServerAdmin admin@admin.com
#
# Директива ServerName задает имя и порт, которыми сервер представляется.
# Это часто может быть определено автоматически, но рекомендуется явно задавать
# эти параметры, во избежание проблем при запуске.
#
# Если Servername не указывает на действительное DNS-имя вашего хоста,
# переадресация, сгенерированная сервером, не будет работать. См. также
# директиву UseCanonicalName
#
# Если ваш хост не имеет зарегистрированного DNS-имени, укажите здесь его IP.
# В любом случае вам придется обращаться к нему по адресу, при этом
# переадресация станет разумней.
#
ServerName server:80
#
# UseCanonicalName: Определяет как Apache строит внутренние URL-ссылки и
# значения переменных SERVER_NAME и SERVER_PORT. Когда задано "Off", Apache
# использует имя и порт, данные клиентом. Если же задано "On", то Apache
# использует значение директивы ServerName.
#
UseCanonicalName Off
#
# DocumentRoot: Директория, из которой будут выдаваться ваши документы.
# По умолчанию, все запросы обслуживаются из этой директории, но могут быть
# использованы символические линки (пересылки) и алиасы (псевдонимы) для
# указания других мест.
#
DocumentRoot "E:/Apache2/htdocs"
#
#
# Каждая доступная для Apache директория может быть сконфигурирована в
# отношении действий и сервисов, которые разрешены и/или запрещены в
# этой директории (и ее суб-директориях).
#
# Для начала, мы определяем "дефолт", как весьма ограниченный набор разрешений.
#
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
#
# Заметьте, что в дальнейшем вы должны явно разрешать конкретные действия так
# что, если что-то не работает так, как вы ожидаете, убедитесь, что вы явно
# разрешили это ниже.
#
# Здесь должна быть указана директория, которую вы установили как DocumentRoot.
#
<Directory "E:/Apache2/htdocs">
#
# Опции могут иметь значения "None", "All" или любую комбинацию из :
# "Indexes", "Includes", "FollowSymLinks", "SymLinksifOwnerMatch", "ExecCGI",
# и "Multiviews".
#
# Заметьте, что опция "MultiViews" должна быть ЯВНО указана - т.к.
# "Options All" ее НЕ включает.
#
# Директива Options является и сложной и важной. Для дополнительной информации
# см. "http://httpd.apache.org/docs-2.0/mod/core.html#options"
#
Options Indexes FollowSymLinks
#
# AllowOverride определяет какие директивы могут быть использованы в файлах
# .htaccess. Она может принимать значения "All", "None", или любую
# комбинацию из : "Options", "FileInfo", "AuthConfig", и "Limit"
#
AllowOverride None
#
# Эти директивы определяют, кто может получать материал с этого сервера.
#
Order allow,deny
Allow from all
</Directory>
#
#
# UserDir: Имя директории, которое постфиксируется к имени домашней директории
# пользователя при получении запроса ~user. Будьте особенно внимательны - здесь
# используются прямые слеши.
#
UserDir "My Documents/My Website"
#
# Управляет доступом к директориям UserDir. Приведен пример сайта, где эти
# директории имеют ограничение "read-only" (только чтение).
#
# Исправьте (в следующем) корневой путь, чтобы он соответствовал
# местонахождению директории пользователя в вашей системе, например,
# "C:/WinNT/profiles/*/My Documents/My Website".
#
#<Directory "C:/Documents and Settings/*/My Documents/My Website">
# AllowOverride FileInfo AuthConfig Limit
# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
# <Limit GET POST OPTIONS PROPFIND>
# Order allow,deny
# Allow from all
# </Limit>
# <LimitExcept GET POST OPTIONS PROPFIND>
# Order deny,allow
# Deny from all
# </LimitExcept>
#</Directory>
#
#
# DirectoryIndex: Имя файла, выдаваемого Apache в ответ на запрос директории.
#
# Файл "index.html.var" (типа type-map или application/x-type-map) используется
# для выдачи конкретной разновидности многовариантного документа в зависимости
# от параметров запроса (content-negotiated). Опция MultiViews может служить
# той же цели, но она намного медленее.
#
DirectoryIndex index.html index.html.var
#
# AccessFileName: Имя файла в каждой директории, задающего правила доступа (к
# этой директории). См. также директиву AllowOverride.
#
AccessFileName .htaccess
#
# Следующие строки запрещают просмотр файлов ".htaccess" и ".htpasswd"
# со стороны Web-клиентов.
#
<Files ~ "^.ht">
Order allow,deny
Deny from all
</Files>
#
# TypesConfig опеределяет местонахождение файла "mime.type" (или ему
# эквивалентного).
#
TypesConfig conf/mime.types
#
#
# Директива DefaultType - это дефолтный MIME-тип, используемый сервером для
# документов, тип которых не определяем по иным признакам, таким, как
# расширение имени файла. Если ваш сервер содержит в основном текстовые или
# HTML-документы, "text/plain" является подходящим значением. Если большая
# часть представляет собой бинарные файлы, такие, как программы или
# изображения, возможно использование "application/octet-stream", чтобы
# предотвратить попытки браузеров показывать содержимое двоичных файлов как
# текст.
#
DefaultType text/plain
#
#
# Модуль "mod_mime_magic" позволяет серверу использовать различные приемы для
# определения типа файла по его содержанию. Директива MIMEMagicFile указывает
# этому модулю месторасположение (файла с описаниями) этих приемов.
#
<IfModule mod_mime_magic.c>
MIMEMagicFile conf/magic
</IfModule>
#
#
# HostnameLookups определяет, записывать ли имена клиентов, или только их
# IP-адреса, например, "www.apache.org" ("On") или "204.62.129.132"("Off").
# По дефолту "Off", поскольку в целом для Интернета было бы лучше, если бы
# эта опция включалась сознательно, т.к. ее включение означает, что каждый
# клиентский запрос влечет за собой КАК МИНИМУМ еще один обратный запрос к
# серверу имен.
#
HostnameLookups Off
#
# ErrorLog: Расположение error-файла. Если вы не задаете директиву ErrorLog
# внутри контейнера какого-либо <VirtualHost>, его сообщения об ошибках
# будут записаны здесь. Если же вы определите error-файл для какого-либо
# <VirtualHost>, то его сообщения об ошибках будут записываться там, а не здесь.
#
ErrorLog logs/error.log
#
#
# LogLevel: Control the number of messages logged to the error.log.
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
#
# LogLevel: Определение количества(sic) ошибок, которые записываются в
# error.log. Возможные значения :
# "debug", "info", "notice", "warn", "error", "crit", "alert", и "emerg".
#
LogLevel warn
#
# Следующие директивы присваивают имена некоторым определениям
# форматов записей, для использования в директиве
# CustomLog (см. ниже).
#
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
# (слово access - здесь как запрос о доступе, а не как доступ - пп)
#
# Расположение и формат лог-файла запросов (в общем формате лог-файлов -
# Common Logfile Format). Если вы не определяете никаких лог-файлов запросов
# внутри контейнера какого-либо <VirtualHost>, сведения будут записываться
# здесь. Если же вы определяете отдельные лог-файлы запросов для каждого(sic)
# <VirtualHost>, то транзакции будут отслеживаться там, а не здесь.
#
# (Наверное, здесь имеется в виду "для отдельных" <VirtualHost>, а не
# "для каждого" -пп)
#
CustomLog logs/access.log common
#
#
# Если вы хотите иметь лог-файлы для отслеживания значений agent и referrer
# (из соответствующих полей поступающих запросов -пп), раскомментируйте
# следующие директивы.
#
#CustomLog logs/referer.log referer
#CustomLog logs/agent.log agent
#
# Если вы предпочитаете единый лог-файл с информацией о запросе, агенте и
# referrer (комбинированный формат лог-файла - Combined Logfile Format),
# вы можете использовать следующую директиву.
#
#CustomLog logs/access.log combined
#
#
# Добавить дополнительную строчку, содержащую версию сервера и имя виртуального
# хоста на страницах, сгенерированных сервером (таких, как сообщения об
# ошибках, FTP листинги директорий, выдачи модулей "mod_status" и "mod_info"
# и т.п.; документы, сгенерированные скриптами CGI, к ним не относятся).
# Установите "EMail", чтобы включить еще и линк "mailto:", направленный
# на ServerAdmin.
# Допустимые значения: On | Off | Email
#
ServerSignature On
#
#
# Алиасы (Псевдонимы): Можно добавлять любое количество алиасов (без
# ограничений). Формат: Alias псевдоним действительное_имя
#
# Обратите внимание, что если вы включаете завершающий слэш в псевдониме, то
# сервер потребует его наличия и в URL. Так, псевдоним "/icons" не определен в
# данном примере, только "/icons/". Если псевдоним закначивается на слеш,
# действительное_имя также должно заканчиваться на слеш, а если псевдоним его
# опускает, то и действительное_имя его должно опустить.
#
# Мы используем алиас "/icons/" для листингов директорий типа FancyIndexed.
# Можно закомментировать эту часть, если вы не используете FancyIndexing.
#
Alias /icons/ "E:/Apache2/icons/"
<Directory "E:/Apache2/icons">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
#
# Следует поменять это значение на (ваш) ServerRoot/manual/. Данный алиас
# обеспечивает доступ к документации, даже если вы передвините свой
# DocumentRoot. Можно эту часть закомментировать, если документация не нужна.
#
Alias /manual "E:/Apache2/manual"
#
<Directory "E:/Apache2/manual">
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
#
#
# ScriptAlias: Указывает директории, которые содержат серверные скрипты.
# Свойства ScriptAlias-ов в основном такие же, как и у простых Alias-ов,
# кроме того, что при запросе, документы в каталоге "действительное_имя"
# считаются приложениями и выполняются на сервере, а не отправляются
# клиенту. К директиве ScriptAlias применяются те же правила в отношении
# завершающего "/", что и к Alias.
#
ScriptAlias /cgi-bin/ "E:/Apache2/cgi-bin/"
#
# Значение "E:/Apache2/cgi-bin" следует поменять на существующую директорию
# CGI, указанную в ScriptAlias.
#
<Directory "E:/Apache2/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
#
# Директива Redirect позволяет сообщить клиенту о документах, ранее
# существовавших в именном пространстве сервера, но теперь не существующих.
# Она позволяет сообщить клиенту новый адрес перемещенного документа.
# Пример:
# "Redirect permanent /foo http://www.example.com/bar"
#
#
# Директивы, управляющие внешним видом листингов директории,
# генерируемых сервером.
#
#
# FancyIndexing задает, хотите ли вы стилизованные листинги директорий или
# же стандартные. VersionSort определяет, будут ли файлы с номерами версий
# сравниваться "естественно", т.е. так, чтобы в листинге файл
# “apache-1.3.9.tar” предшествовал файлу “apache-1.3.12.tar”.
#
IndexOptions FancyIndexing VersionSort
#
#
# Директивы AddIcon* указывают серверу, какие иконы показывать для
# различных файлов, или расширений имен файлов. Они показываются только
# для директорий с FancyIndexing.
#
AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
AddIconByType (TXT,/icons/text.gif) text/*
AddIconByType (IMG,/icons/image2.gif) image/*
AddIconByType (SND,/icons/sound2.gif) audio/*
AddIconByType (VID,/icons/movie.gif) video/*
AddIcon /icons/binary.gif .bin .exe
AddIcon /icons/binhex.gif .hqx
AddIcon /icons/tar.gif .tar
AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
AddIcon /icons/a.gif .ps .ai .eps
AddIcon /icons/layout.gif .html .shtml .htm .pdf
AddIcon /icons/text.gif .txt
AddIcon /icons/c.gif .c
AddIcon /icons/p.gif .pl .py
AddIcon /icons/f.gif .for
AddIcon /icons/dvi.gif .dvi
AddIcon /icons/uuencoded.gif .uu
AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
AddIcon /icons/tex.gif .tex
AddIcon /icons/bomb.gif core
AddIcon /icons/back.gif ..
AddIcon /icons/hand.right.gif README
AddIcon /icons/folder.gif ^^DIRECTORY^^
AddIcon /icons/blank.gif ^^BLANKICON^^
#
# DefaultIcon показывает какую икону показывать для файлов, не имеющих
# явно определенных икон.
#
DefaultIcon /icons/unknown.gif
#
#
# Директива AddDescription позволяет поместить краткое описание после имени
# файла в листингах, сгенерированных сервером. Они показываются только для
# директорий с FancyIndexing.
#
# Формат: AddDescription "описание" имя_файла
#
#AddDescription "GZIP compressed document" .gz
#AddDescription "tar archive" .tar
#AddDescription "GZIP compressed tar archive" .tgz
#
#
# ReadmeName - это дефолтное имя README-файла, который сервер будет искать по
# умолчанию и добавит в конце листингов директорий.
#
# HeaderName - имя файла, который будет добавлен в начале листингов директорий.
#
ReadmeName README.html
HeaderName HEADER.html
#
#
# IndexIgnore - это список файлов, которые должны быть исключены из
# листингов. В именах файлов допускается использование метасимволов замены в
# стиле shell.
#
IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
#
#
# AddEncoding позволяет некоторым браузерам (Mosaic/X 2.1+) на ходу
# распаковывать информацию. Замечание: не все браузеры поддерживают это.
# Несмотря на сходство имен, следующие директивы Add* не имеют ничего общего
# с директивами форматирования FancyIndexing, указанными выше.
#
AddEncoding x-compress Z
AddEncoding x-gzip gz tgz
#
#
# DefaultLanguage и AddLanguage позволяют указать языки документов. Вы можете
# в последствие использовать динамическое определение содержимого (content
# negotiation) для выдачи браузеру файла на языке понятном пользователю.
#
#
# Установка языка default. Это означает, что вся информация, идущая без
# конкретного языкового тэга (см. ниже), будет идти на дефолтном языке.
# Вероятно, не стоит задавать эту директиву, не будучи твердо уверенным в том,
# что она подходит для всех случаев.
#
#
# * В общем, лучше не указывать определенный язык
# * для страницы, чем задать неправильный язык.
#
# DefaultLanguage nl
#
# Примечание 1: Суффикс не обязательно должен совпадать с
# кодом-идентификатором языка. Те, у кого есть документы
# на польском языке (стандартный буквенный
# код Интернета pl), могут воспользоваться директивой
# "AddLanguage pl .po" во избежание конфликта с распространенным
# суффиксом скриптов на языке Perl.
#
# Примечание 2: Нижеследующие примеры показывают, что в некоторых
# случаях двухбуквенный код языка не совпадает с двухбуквенным
# кодом соответствующей страны.
# Например, Датский (da) и Дания (dk).
#
# Примечание 3: В случае “ltz” мы нарушаем требования RFC, используя
# трехбуквенный код. Ведется работа по устранению несоответствий и
# усовершенствованию "rfc1766".
#
# Danish, датский (da)
# Dutch, голландский, (nl)
# English, английский (en)
# Estonian, эстонский (et)
# French, французский (fr)
# German, немецкий (de)
# Greek-Modern, новогреческий (el)
# Italian, итальянский (it)
# Norwegian, норвежский (no)
# Norwegian Nynorsk (nn)
# Korean, корейский (kr)
# Portugese, португальский (pt)
# Luxembourgeois*, люксембургский (ltz)
# Spanish, испанский (es)
# Swedish, шведский (sv)
# Catalan, каталанский (ca)
# Czech, чешский(cz)
# Polish, польский (pl)
# Brazilian Portuguese, бразильско-португальский (pt-br)
# Japanese, японскский (ja)
# Russian, русский (ru)
# Croatian, хорватский (hr)
#
AddLanguage da .dk
AddLanguage nl .nl
AddLanguage en .en
AddLanguage et .et
AddLanguage fr .fr
AddLanguage de .de
AddLanguage he .he
AddLanguage el .el
AddLanguage it .it
AddLanguage ja .ja
AddLanguage pl .po
AddLanguage kr .kr
AddLanguage pt .pt
AddLanguage nn .nn
AddLanguage no .no
AddLanguage pt-br .pt-br
AddLanguage ltz .ltz
AddLanguage ca .ca
AddLanguage es .es
AddLanguage sv .se
AddLanguage cz .cz
AddLanguage ru .ru
AddLanguage tw .tw
AddLanguage zh-tw .tw
AddLanguage hr .hr
#
# LanguagePriority позволяет задать порядок выбора некоторых языков (в случае
# неоднозначности) при динамическом определении содержания (content
# negotiation).
#
# Просто перечислите языки в порядке убывания приоритета. Здесь они даны в
# более-менее алфавитном порядке. Вероятно, вы захотите изменить этот порядок.
#
LanguagePriority en da nl et fr de el it ja kr no pl pt pt-br ltz ca es sv tw
#
# ForceLanguagePriority позволяет вам (серверу) выдать конкретную страницу,
# вместо сообщения MULTIPLE CHOICES (задается Prefer), [в случае неоднозначного
# выбора], или сообщения NOT ACCEPTABLE (задается Fallback)[в случае, если
# не один язык не подошел]
#
ForceLanguagePriority Prefer Fallback
#
#
# AddDefaultCharset задает дефолтную таблицу символов (кодировку) для всех
# выдаваемых страниц. Это всегда полезно, и открывает возможность будущей
# мультилингвизации вашего веб сайта. Ее обозначение как дефолтной не
# наносит вреда, т.к. стандарт, в любом случае, определяет, что страница
# использует кодировку iso-8859-1 (latin1), если не указано иначе, т.е. вы
# просто подтверждаете очевидное. Существуют так же соображения о безопасности
# для браузеров, относящиеся к обработке javascript и URL, по которым всегда
# стоит указывать дефолтную кодировку.
#
AddDefaultCharset WINDOWS-1251
#
#
# Часто используемые расширения для обозначения кодировок. Вы, вероятно,
# захотите избежать столкновений с языковыми расширениями, если вы не
# специалист по тщательному тестированию установок после каждого изменения.
# См. "ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets" для
# официального списка кодировок и соответствующих им документов RFC.
#
AddCharset ISO-8859-1 .iso8859-1 .latin1
AddCharset ISO-8859-2 .iso8859-2 .latin2 .cen
AddCharset ISO-8859-3 .iso8859-3 .latin3
AddCharset ISO-8859-4 .iso8859-4 .latin4
AddCharset ISO-8859-5 .iso8859-5 .latin5 .cyr .iso-ru
AddCharset ISO-8859-6 .iso8859-6 .latin6 .arb
AddCharset ISO-8859-7 .iso8859-7 .latin7 .grk
AddCharset ISO-8859-8 .iso8859-8 .latin8 .heb
AddCharset ISO-8859-9 .iso8859-9 .latin9 .trk
AddCharset ISO-2022-JP .iso2022-jp .jis
AddCharset ISO-2022-KR .iso2022-kr .kis
AddCharset ISO-2022-CN .iso2022-cn .cis
AddCharset Big5 .Big5 .big5
#
#
# Для русского языка используется более, чем одна кодировка (в основном,
# зависит от клиента):
#
AddCharset WINDOWS-1251 .cp-1251 .win-1251
AddCharset CP866 .cp866
AddCharset KOI8-r .koi8-r .koi8-ru
AddCharset KOI8-ru .koi8-uk .ua
AddCharset ISO-10646-UCS-2 .ucs2
AddCharset ISO-10646-UCS-4 .ucs4
AddCharset UTF-8 .utf8
#
#
# Ниже приведенный список не соответствует конкретному (iso) стандарту, но
# работает с довольно широким списком браузеров. Заметьте, что верхний регистр,
# на самом деле, имеет значение (этого не должно происходить, но с некоторыми
# браузерами, тем не менее, происходит).
#
# См. "ftp://ftp.isi.edu/in-notes/iana/assignments/character-sets" для своего
# рода списка (кодировок). Но браузеры поддерживают только некоторые из них.
#
AddCharset GB2312 .gb2312 .gb
AddCharset utf-7 .utf7
AddCharset utf-8 .utf8
AddCharset big5 .big5 .b5
AddCharset EUC-TW .euc-tw
AddCharset EUC-JP .euc-jp
AddCharset EUC-KR .euc-kr
AddCharset shift_jis .sjis
#
# AddType позволяет добавить новые MIME-типы (или переопределить старые из
# конфигурационного файла "mime.types") для определенных типов файлов.
#
AddType application/x-tar .tgz
#
# AddHandler позволяет связать определенные расширения имен файлов с
# обработчиками (handlers), вне зависимости от типа файла.
# Обработчики могут быть либо встроены в сервер, либо добавлены директивой
# Action (см. ниже).
#
# Для использования скриптов CGI вне директорий типа ScriptAliased :
# (Кроме того, вам придется добавить "ExecCGI" к директиве "Options")
#
#AddHandler cgi-script .cgi
#
# Для файлов, которые включают свои HTTP заголовки:
#
#AddHandler send-as-is asis
#
# Для imagemap файлов, обрабатываемых сервером:
#
#AddHandler imap-file map
#
# Для type-maps (динамически определяемых ресурсов):
# Включено по умолчанию, чтобы допустить распространение страницы
# Apache "It Worked" ("Сработало!") на различных языках.
#
AddHandler type-map var
#
#
# Фильтры позволяют обработать содержание до отправки клиенту.
#
# Для обработки .shtml файлов на предмет вставок, производимых сервером
# (server-side includes - SSI):
# (Кроме того, вам придется добавить "Includes" к директиве "Options")
#
#AddOutputFilter INCLUDES .shtml
#
#
# Action позволяет определить MIME или другие типы (для которых задан
# какой-нибудь handler), при запросе которых выполняется соответствующий
# скрипт. Это устраняет необходимость многократного упоминания URL путей
# часто используемых скриптов CGI.
#
# Format: Action media/type /cgi-script/location
# Format: Action handler-name /cgi-script/location
#
# Формат: Action название_MIME_типа путь/скрипт
# Action назавние_типа_или_обработчика(han
----------------------------------------------------------------------------
****************************************************************************
----------------------------------------------------------------------------
Ссылки:
Распространение и использование - бесплатное.
Рабочая лошадка 1.1b4 (проблема-2000 при использовании
include и генерации индексов) со своей русификацией (mod_rcs) счетчиком
(mod_cntr).
Текущая (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)
- access.conf - ныне пуст
- httpd.conf - основной файл конфигурации
- magic - для модуля mod_mime_magic (анало команды file), не надо
реедактировать
- mime.types - не надо редактировать
- 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 добавляем, чтобы
явно знать какой виртуальный хост обработал заявку - 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 со своего домена
- описание виртуальных хостов
- .htaccess в директориях
- линк
- конфигурация дополнительных модулей
- mod_cntr
- mod_charset (руссификация)
- включение кодировок и добавление алиасов mac (x-mac-cyrillic) и lat
(translit)
- дырки в firewall
- на входе в компьютер
- для диалапных клиентов
- для доступа извне
- позже разобраться
Тестируем работоспособность (здесь не нужен 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: любой документ хендлером server-parsed (директива AddHandler и
AddType text/html для того же суффикса) будет обрабатываться модулем include
(необходимо установить опцию Includes для данно директории).
Коман
оформляются как SGML-комментарии:
меньше!--#команда
{атрибут=значение} --больше
команды:
- config - атрибуты:
- errmsg - текст сообщения, посылаемый клиенту в случае ошибк
разбора SSI
- sizefmt - формат размера файла
- bytes
- abbrev - в Kb или Mb
- timefmt - строка, которая используется strftime(3) при выдаче
дат
- echo - печать значен переменных, имена которых задаются в
атрибутах
- exec - выполнить команду или CGI скрипт (если нет опции
IncludesNOEXEC)
- cgi - имя CGI скрипта (если имя относительное, то относительно
текущего документа), должен лежать в допустимом месте. PATH_INFO и
QUERY_STRING наследуется из текущего документа. Include-переменные
добавляются к стандартному CGI-окружению. Если скрипт возвращает заголовок
Location:, то он преобразуется в HTML anchor.
- cmd - указанная команда выполняется, используя /bin/sh.
Include-переменные передаются в команду.
- fsize - печать размера файла
- file - имя файла (м.б. относительно текущего документа)
- virtual - URL (м.б. относительно текущего документа)
- flastmode - время последне модификации файла
- file - аналогично fsize
- virtual - аналогично fsize
- include - вставить текст другого документа или файла (можгут быть
вложенные include). Вставляемый файл контролируется на право доступа обычн
образом. Если в текуще директории действует опция IncludesNOEXEC, а
вставляемый документ содержит вызов CGI, то документ не вставляется.
- file - только относительно текущего документа (никаких
абсолютных имен или имен, начинающихся с ../)
- virtual - URL. Не может содержать схему или имя хоста. М.б.
относительно текущего документа. Может содержать query.
- printenv - печать всех определенных переменных окружения и их
значен
- set - установить значение переменной окружения
- var - имя переменно
- value - значение переменно
Дополнительные (к стандарту CGI) переменные окружения:
- DATE_GMT
- DATE_LOCAL
- DOCUMENT_NAME (имя файла без имен директории)
- DOCUMENT_URI (URL запрошенного (не текущего) документа)
- LAST_MODIFIED
Внутри строки, заключенной в кавычки в теле директивы SSI, происходит
подстановка перемнной ее значением как в shell.
Условное выполнение
- меньше!--#if expr="test_condition"
--больше
- меньше!--#elif expr="test_condition"
--больше
- меньше!--#else --больше
- меньше!--#endif --больше
Тестовые условия (если строка2 заключена в слеши, то она интерпретируется
как регулярное выражение; "=" и "!=" имеет больший приоритет, чем
"_амперсенд__амперсенд_" и "||"; "!" - еще больший; все, что не является
переменной ил оператором, рассматривается как строка; строки могут быть
заключены в апострофы; если строка содержит пробелы, то она ДОЛЖНА быть
заключена в апострофы; две строки рядо конкатенируются через пробел):
- строка - истина, если строка не пуста
- строка1 = строка2
- строка1 != строка2
- строка1 меньше строка2
- строка1 меньше= строка2
- строка1 больше строка2
- строка1 больше= строка2
- (test_condition)
- ! test_condition
- test_condition1 _амперсенд__амперсенд_ test_condition2
- test_condition1 || test_condition2
- SVDA XBitHack status
статус влияет на обработку
файлов, имеющих MIME-тип text/html:
- off (по умолчанию)
- on - если файл имеет установленный x-бит для владельца, то он
рассматривается как server parsed
- full - так же как on, но проверяется x-бит для группы и есл установлен,
то посылается заголовок Last-modified date (в соответствии со времене
последне модификации файла). Это позволяет кешировать документ.
Карта, разбираемая сервером, (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 - значение переменной окружения. Наиболее часто используются (где взять весь список?)
- Referer - откуда была ссылка на документ
- User-agent - что сказал о себе броусер
- %h - имя удаленного хоста
- %a - адрес удаленного хоста
- %{имя-заголовка}i - значение заголовка запроса
- %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 до перекодировки)