Книга: Linux-сервер своими руками
12.6. Пример файла httpd.conf
12.6. Пример файла httpd.conf
В этом разделе приведен пример стандартной конфигурации сервера Apache (см. листинг 12.13). К каждому блоку листинга сопутствуют комментарии на русском языке, которые помогут вам разобраться с различными опциями сервера.
Листинг 12.13. Пример файла httpd.conf
##
## httpd.conf — файл конфигурации сервера HTTP Apache
##
#----------------------------------------------------------------
# Установите имя сервера
ServerName www.dhsilabs.com
ResourceConfig /dev/null
AccessConfig /dev/null
# Поддержка динамических разделяемых объектов
# (Dynamic Shared Object – DSO)
# Для более подробной информации о DSO прочтите файл README.DSO,
# входящий в дистрибутив Apache.
# Модуль расширяет возможности сервера Apache,
# добавляет в его состав новые функции.
# Подключить модуль можно так:
# LoadModule foo_module libexec/mod_foo.so
# Вы можете найти документацию по модулями в файле
# "/var/www/manual/mod"
#LoadModule mmap_static_module modules/mod_mmap_static.so
LoadModule env_module modules/mod_env.so
### The first module activates buffered logs.
# Первый модуль обеспечивает протоколирование.
# Он запишет информацию в протокол, когда буфер объемом 4К
# переполнится. Используется файл журнала access_log
#LoadModule config_buffered_log_module modules/mod_log_config_buffered.so
LoadModule config_log_module modules/mod_log_config.so
LoadModule agent_log_module modules/mod_log_agent.so
LoadModule referer_log_module modules/mod_log_referer.so
#LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule mime_module modules/mod_mime.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule status_module modules/mod_status.so
LoadModule info_module modules/mod_infо.so
# Вы должны выбрать директиву mod_include или mod_include_xssi,
# но не обе одновременно! Директива mod_include более безопасна,
# но xxsi содержит больше функций.
LoadModule includes_module modules/mod_include.so
#LoadModule includes_module modules/mod_include_xssi.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule dir_module modules/mod_dir.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule asis_module modules/mod_asis.so
LoadModule imap_module modules/mod_imap.so
LoadModule action_module modules/mod_actions.so
#LoadModule speling_module modules/mod_speling.so
LoadModule userdir_module modules/mod_userdir.so
LoadModule proxy_module modules/libproxy.so
LoadModule alias_module modules/modalias.so
# Модуль mod_jserv должен быть объявлен до mod_rewrite,
<IfDefine HAVE_JSERV>
LoadModule jserv_module modules/mod_jserv.so
</IfDefine>
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule access_module modules/mod_access.so
LoadModule auth_module modules/mod_auth.so
LoadModule anon_auth_module modules/mod_auth_anon.so
#LoadModule dbm_auth_module modules/mod_auth_dbm.so
#LoadModule db_auth_raodule modules/mod_auth_db.so
LoadModule digest_module modules/mod_digest.so
#LoadModule cern_meta_module modules/mod_cern_meta. so
LoadModule expires_module modules/mod_expires.so
LoadModule headers_module modules/mod_headers.so
LoadModule usertrack_module modules/mod_usertrack.so
#LoadModule example_module modules/mod_example.so
#LoadModule unique_id_module modules/mod_unique_id.so
LoadModule setenvif_module modules/mod_setenvif.so
# В полном списке модулей должны быть перечислены все доступные
# модули (статических или общедоступных), чтобы достичь
# правильного порядка выполнения.
ClearModuleList
#AddModule mod_mmap_static.с
# AddModule mod_php.c
# AddModule mod_php3.c
#AddModule mod_php4.с
#AddModule mod_perl.c
# LoadModule php_module modules/mod_php.so
# LoadModule php3_module modules/mod_php4.so
#LoadModule php4_module modules/mod_php4.so
AddModule mod_env.c
AddModule mod_log_config.с
#AddModule mod_log_config_buffered.с
AddModule mod_log_agent.с
AddModule mod_log_referer.с
#AddModule mod_mime_magic.с
AddModule mod_mime.с
AddModule mod_negotiation.с
AddModule mod_status.с
AddModule mod_info.c
AddModule modinclude.c
#AddModule mod_include_xssi.с
AddModule mod_autoindex.с
AddModule mod_dir.c
AddModule mod_cgi.с
AddModule mod_asis.c
AddModule mod_imap.c
AddModule mod_actions.с
#AddModule mod_speling.с
AddModule mod_userdir.с
AddModule mod_proxy.c
AddModule mod_alias.c
# Модуль mod_jserv должен быть объявлен до mod_rewrite.
<IfDefine HAVE_JSERV>
AddModule mod_jserv.c
</IfDefine>
AddModule mod_rewrite.с
AddModule mod_access.с
AddModule mod_auth.c
AddModule mod_auth_anon.с
#AddModule raod_auth_dbm.с
#AddModule mod_auth_db.с
AddModule mod_digest.c
#AddModule mod_cern_meta.с
AddModule mod_expires.с
AddModule mod_headers.с
AddModule mod_usertrack.с
#AddModule mod_example.с
#AddModule mod_unique_id.с
AddModule mod_so.c
AddModule mod_setenvif.c
#-------------– Name Space and Server Settings -----------------
# Настройки пространства имен и сервера
# В этом разделе вы определяете, какие имена будут видеть
# пользователи вашего HTTP-сервера. Этот файл также определяет
# настройки сервера, которые раньше содержались в отдельном файле
# srm.conf. Теперь этот файл входит в состав httpd.conf.
# Директива DocumentRoot определяет местонахождение
# корневого каталога документов вашего сервера.
DocumentRoot /var/www/html
# Директива UserDir задает названия подкаталога в домашнем
# каталоге пользователя, из которого берутся документы
# в том случае, если вы активизируете возможность использования
# пользовательских каталогов.
UserDir public_html
# Директива DirectoryIndex позволяет задать название документа,
# который будет возвращен по запросу, который не содержит имя документа.
DirectoryIndex index.html index.php index.htm index.shtml index.cgi Default.htm default.htm index.php3
# Директива FancyIndexing определяет оформление каталога –
# стандартное или индексируемое.
FancyIndexing on
# Директивы AddIcon* указывают серверу, какие пиктограммы
# использовать для показа различных типов файлов
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 .pi .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 задает описание файла
# Формат: AddDescription "описание" filename
# Директива ReadmeName определяет имя файла README по умолчанию
Формат: ReadmeName name
ReadmeName README HeaderName HEADER
# Директива IndexIgnore определяет набор файлов, которые
# будут проигнорированы при индексировании
# Формат: IndexIgnore name1 name2…
IndexIgnore . ??* *~ *# HEADER* README* RCS
# Директива AccessFileName определяет имя файла, содержащего
# директивы управления доступом
AccessFileName .htaccess
# Директива TypesConfig задает местонахождение файла mime.types
TypesConfig /etс/httpd/conf/apache-mime.types
# С помощью директивы DefaultType можно указать MIME-тип по умолчанию ,
# для документов, тип которых сервер определить не может
DefaultType text/plain
# Директива AddEncoding разрешает вашему браузеру распаковывать
# информацию "на лету"
AddEncoding x-compress Z
AddEncoding x-gzip gz
# AddLanguage разрешает определять язык документа
AddLanguage en .en
AddLanguage fr .fr
AddLanguage de .de
AddLanguage da . da
AddLanguage el .el
AddLanguage it .it
# Директива LanguagePriority определяет приоритет языков LanguagePriority en fr de
# Директива Redirect позволяет перенаправить клиента на другой URL
# Вы можете перенаправить клиента на другой url или же url,
# который находится в вашем пространстве имен, то есть на любой
# документ, который находится в одном из подкаталогов каталога
# DocumentRoot. Вы не можете, например, перенаправить клиента
# к каталогу /etc, потому что он не находится в вашем
# пространстве имен.
# URL – это идентификатор ресурса, поэтому вы должны его
# указывать в виде протокол://адрес.домен, например,
# http://www.linux.ru. Если вы укажите просто каталог, например,
# /images, этот каталог должен быть подкаталогом каталога
# DocumentRoot, а не корневого каталога вашей основной файловой
# системы. Формат: Redirect несуществующий_url url
# С помощью директивы Alias можно предоставить доступ не только
# к файлам, находящимся в каталоге, указанном директивой
# DocumentRoot, и его подкаталогах, но и в других каталогах,
# Формат:
# Alias несуществующее_имя нормальное_имя
Alias /icons/ /var/www/icons/
# ScriptAlias определяет расположение каталога сценариев CGI
# Формат: ScriptAlias подставное_имя настоящее_имя
ScriptAlias /cgi-bin/ /var/www/cgi-bin/
ScriptAlias /protected-cgi-bin/ /var/www/protected-cgi-bin/
# С помощью директивы AddType можно добавить новый тип MIME,
# который не указан в файле apache-mime.types.
# Формат: AddType type/subtype ext1
# Обычно для модуля РНР3 (он не является частью Apache)
# директива AddType используется так:
AddType application/x-httpd-php4 .php3 .phtml .php .php4
# AddType application/x-httpd-php3-source.phps
# Для PHP/FI (PHP2) :
# AddType application/x-httpd-php.phtml
# ScriptAlias /_php/ /usr/bin/php
# Action application/x-httpd-php /usr/bin/php
# Action application/x-httpd-php3 /usr/bin/php
# Action application/x-httpd-php4
# Директива AddHandler позволяет сопоставить определенному
# типу MIME какой-нибудь обработчик.
# Формат: AddHandler action-name extl
# Для использования сценариев CGI :
AddHandler cgi-script .cgi
# Для использования генерируемых сервером файлов HTML
AddType text/html .shtml
AddHandler server-parsed .shtml
# Раскомментируйте нижерасположенную строку, чтобы включить
# функцию Apache "отправь-как-есть" (send-as-is)
#AddHandler send-as-is asis
#
# Если вы хотите использовать карты изображений:
AddHandler imap-file map
# Для включения карт типов, используйте:
#AddHandler type-map var
# С помощью директивы Action можно определить какое-нибудь
# действие для обработчика. Например, вы можете запустить
# какую-нибудь программу для обработки файла данного типа.
# Формат: Action media/type /cgi-script/location
# Формат: Action handler-name /cgi-script/location
# Директива MetaDir определяет имя каталога, в котором сервер
# Apache может найти информационные файлы meta. Эти файлы содержат
# дополнительные заголовки HTTP, которые будут добавлены к
# документу перед его передачей клиенту.
#MetaDir .web
# Директива MetaSuffix определяет имя суффикса файла, который
# содержит meta-тэги.
#MetaSuffix .meta
# Здесь можно определить сообщения об ошибках.
# Это можно сделать тремя методами:
# 1) обыкновенный текст
# ErrorDocument 500 "The server made a boo boo.
# n.b. the (") marks it as text, it does not get output
#
# 2) локальное перенаправление
# ErrorDocument 404 /missing.html
# to redirect to local url /missing.html
# ErrorDocument 404 /cgi-bin/missing_handler .pi
# n.b. can redirect to a script or a document using server-side-includes.
#
# 3) внешнее перенаправление
# ErrorDocument 402 http://some.other_server.com/subscription_info.html
#
<Location /manual>
ErrorDocument 404 "The document you requested has not been
installed on your system. Please install the apache-manual
package.
</Location>
# Модуль mod_mime_magic позволяет серверу использовать различные
# подсказки из файла для определения его типа.
# MimeMagicFile /etc/httpd/conf/magic
# Следующие директивы необходимы для браузеров Netscape 2.x и
# Internet Explorer 4.0b2
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4.0b2;" nokeepalive downgrade-1.0 force-response-1.0
# Следующие директивы отключают ответы НТТР/1.1 для браузеров,
# которые не поддерживают протокол HTTP/1.1
BrowserMatch "RealPlayer 4.0" force-response-1.0
BrowserMatch "Java/l.0" force-response-1.0
BrowserMatch "JDK/1.0" force-response-1.0
#------------------– Настройки доступа –--------------------
# В этом разделе определяются настройки сервера, которые управляют
# доступом к серверу. Раньше эти настройки находились в файле
# access.conf.
# Каждый каталог, к которому Apache может получить доступ,
# может быть сконфигурирован определенным образом. Можно
# запретить выполнение некоторых операций, доступ определенных
# пользователей или узлов сети.
# Установки доступа распространяются на весь каталог и на все его
# подкаталоги.
# Прежде всего, конфигурируем корневой каталог для установки
# полномочий доступа.
<Directory />
Options Indexes Includes FollowSymLinks
AllowOverride None
</Directory>
<Directory /home>
# Здесь должны быть определены директивы "Includes", "FollowSymLinks",
# "ExecCGI", "MultiViews" или любая комбинация "Indexes"
Options Indexes Includes FollowSymLinks
AllowOverride All
# Разрешает доступ всем
order allow,deny
allow from all
</Directory>
# Каталоги /var/www/cgi-bin и /var/www/protected-cgi-bin должны быть
# определены с помощью директивы ScriptAliased
<Directory /var/www/cgi-bin>
AllowOverride All
Options ExecCGI
</Directory>
<Directory /var/www/protected-cgi-bin>
order deny,allow
deny from all
allow from localhost
#allow from .your_domain.com
AllowOverride None
Options ExecCGI
</Directory>
# Разрешает отчеты о состояния сервера
<Location /server-status>
SetHandler server-status
order deny,allow
deny from all
allow from localhost, 127.0.0.1
# Установите здесь имя вашего домена
# allow from .your_domain.com
</Location>
# Разрешает доступ к файлам документации для локальной машины.
Alias /doc /usr/share/doc
<Directory /usr/share/doc>
order deny,allow
deny from all
allow from localhost, 127.0.0.1
# allow from .your_domain. com
Options Indexes FollowSymLinks
</Directory>
#-------------------– Конфигурация сервера ------------------------
# Тип сервера: inetd или standalone.
ServerType standalone
# Если вы используете тип inetd, перейдите к директиве "ServerAdmin"
# Директива Port – только для standalone-сервера.
# Если вы хотите запустить сервер Apache с использованием этого
# или любого другого порта, номер которого меньше 1024,
# вы должны обладать правами суперпользователя. Но
# даже если у вас нет таких прав, вы можете запустить сервер
# для работы с портом, номер которого превышает значение 1024.
# Обычно используется # номер 8080 или 8000.
Port 80
# Сервер Apache ведет журнал доступа других компьютеров.
# Если вы включите данную опцию, то в журнал будет записано
# доменное имя компьютера-клиента. Если эта опция выключена,
# то в журнал будет записан IP-адрес клиента. Включение данной
# опции замедляет работу сервера, так как ему требуется
# дополнительное время на ожидание ответа от сервера DNS.
HostnameLookups off
# Директивы User и Group определяют идентификаторы пользователя
# и группы.
# Данные идентификаторы присваиваются серверу, если он запущен в
# автономном режиме. Можно использовать как имена пользователей,
# так и их числовые эквиваленты – UID. По умолчанию используется
# имя пользователя nobody или apache. Из соображений безопасности
# не рекомендуется изменять это значение и присваивать имя
# реального пользователя.
User apache Group apache
# Директива ServerAdmin задает электронный адрес вебмастера вашего
# Web-узла. В случае возникновения ошибок именно по этому адресу
# будет отправлено сообщение.
ServerAdmin root@localhost
# В директиве ServerRoot указывается местонахождение файлов
# конфигурации сервера Apache.
# По умолчанию используется каталог /etc/httpd.
ServerRoot /etc/httpd
# Данная директива используется для компьютеров, которые имеют
# несколько IP-адресов. Обычно данная директива используется
# для конфигурирования виртуальных хостов.
# BindAddress *
# Прослушивать порт 80
Listen 80
# Директивы ErrorLog и TransferLog определяют расположение
# журналов сервера Apache. Обычно используется каталог
# /etc/httpd/logs, который является ссылкой на каталог
# /var/log/httpd или на любой другой.
ErrorLog logs/error_log
# LogLevel: устанавливает уровень протоколирования.
# Протоколируются предупреждающие сообщения сервера (warn)
# и ошибки. Если вы хотите протоколировать только ошибки,
# установите error
LogLevel warn
# Определяет формат файлов протокола, то есть информация,
# которая будет протоколироваться. Обычно их не нужно изменять.
LogFormat "%h %1 %u %t "%r" %>s %b "%{Referer}i" "%{UserAgent}i"" combined
LogFormat "%h %1 %u %t "%r" %>s %b" common
LogFormat "%(Referer}i –> %U" referer
LogFormat "%{User-agent}i" agent
# Можно определить тип протокола
# Если вы хотите протоколировать общую информацию
# CustomLog logs/access_log common
# Если вы хотите протоколировать referer
# CustomLog logs/referer_log referer
# Если вы хотите протоколировать название пользовательских
# агентов (браузеров)
# CustomLog logs/agent_log agent
# По умолчанию используется комбинированный тип протоколирования,
# то есть будет протоколироваться вся информация
CustomLog logs/access_log combined
# С помощью директивы PidFile указывается имя файла,
# в котором исходный процесс сервера будет регистрироваться.
PidFile /var/run/httpd.pid
# ScoreBoardFile: Этот файл используется для сохранения внутренней
# информации процесса сервера.
ScoreBoardFile /etc/httpd/httpd.Scoreboard
# Директива LockFile определяет файл блокировки, который
# используется сервером. Сервер должен быть скомпилирован с опцией
# USE_FCNTL_SERIALIZED_ACCEPT или
# USE_FLOCK_SERIALIZED_ACCEPT. Файл блокировки должен быть
# сохранен НА ЛОКАЛЬНОМ ДИСКЕ.
#
LockFile /etc/ittpd/httpd.lock
# Директива ServerName позволяет вам установить имя узла вашего
# сервера, которое будет использоваться клиентами,
# то есть установить "www" вместо реального имени сервера.
# Имя, которое вы укажете, должно быть указано в сервере DNS
# вашего домена.
ServerName new.host.name
# Директива UseCanonicalName появилась в версии Apache 1.3.
# Она разрешает использовать каноническое имя для сервера узла.
UseCanonicalName on
# Данная директива позволяет прокси-серверу, например SQUID,
# не кэшировать документы, которые не генерируются автоматически,
# то есть в процессе выполнения различных сценариев.
CacheNegotiatedDocs
# Директива Timeout задает промежуток времени в секундах,
# в течение которого сервер продолжает попытки возобновления
# приостановленной передачи данных. Значение директивы Timeout
# распространяется не только на передачу, но и на прием данных.
Timeout 300
# Директива KeepAlive разрешает постоянные соединения,
# то есть такие соединения, в которых производится более
# одного запроса за один раз.
KeepAlive off
# MaxKeepAliveRequests: Максимальное количество запросов,
# разрешенное в течение постоянного соединения. Установите 0
# для снятия ограничения. Для повышения производительности
# рекомендуется установить это число сравнительно большим.
MaxKeepAliveRequests 100
# Директива KeepAliveTimeout определяет тайм-аут для постоянного
# соединения.
KeepAliveTimeout 15
# Минимальное и максимальное число серверов в пуле
MinSpareServers 8
MaxSpareServers 20
# Количество серверов для запуска StartServers 10
# Ограничивает общее количество клиентов. Когда это число будет
# превышено, новые клиенты получат отказ, поэтому это число
# не должно быть слишком маленьким.
MaxClients 150
# После обработки определенного количества запросов, указанного
# в директиве MaxRequestsPerChild, копия сервера завершается,
# а вместо нее запускается новая.
MaxRequestsPerChild 500
# Директивы конфигурации прокси-сервера
# ProxyRequests On
# Для включения кэширования, раскомментируйте строки ниже:
# CacheRoot /var/cache/httpd
# CacheSize 5
# CacheGcInterval 4
# CacheMaxExpire 24
# CacheLastModifiedFactor 0.1
# CacheDefaultExpire 1
# NoCache a_domain.com another_domain.edu joes.garage_sale.com
####################################
# Настройки производительности SGI #
####################################
#
#
# Для использования этой функции, раскомментируйте модуль
# mod_mmap_static в разделе описания модулей.
<IfModule mod_mmap_static.c>
QSC on
</IfModule>
# Если вы хотите использовать буферизованное протоколирование,
# раскомментируйте модуль mod_log_config_buffered в разделе
# описания модулей.
# Для использования карты памяти, раскомментируйте эту строку:
# mmapfile /var/www/html/file_to_map_in_memory
#
# Если вы хотите настроить процессы потомки, пожалуйста,
# прочитайте документацию на вашем сервере
# http://localhost/manual/misс/perf-mja.html.
# Эта страница объясняет как привязать определенный IP-адрес
# или порт к другому процессору.
# SingleListen On
#######################
# Виртуальные серверы #
#######################
#
# Поддержка модуля perl
# Замечание: не удаляйте расположенные далее строки, иначе это может
# разрушить вашу конфигурацию.
<IfDefine PERLPROXIED>
ProxyPass /perl/ http://127.0.0.1:8200/
ProxyPassReverse /perl/ http://127.0.0.1:8200/
</IfDefine>
# Файл, в котором находятся директивы конфигурирования
# виртуальных узлов.
Include conf/vhosts/Vhosts.conf
#
#
# Для поддержки динамических виртуальных хостов и виртуальных
# домашних каталогов, раскомментируйте следующие строки:
# LoadModule vhost_alias_module modules/mod_vhost_alias.so
# AddModule mod_vhost_alias.c
# Include conf/vhosts/DynamicVhosts.conf
# Include conf/vhosts/VirtualHomePages.conf
# Директивы конфигурирования PHP
Include conf/addon-modules/php.conf
- Пример установочного скрипта
- Пример из практики
- ПРИМЕР ПРОСТОЙ ПРОГРАММЫ НА ЯЗЫКЕ СИ
- Эффективная работа с временными файлами сортировки
- Примеры получения статистики
- Пример применения метода «пять почему»
- Единое имя файла параметров InterBase
- Параметры конфигурационного файла InterBase
- Параметры в ibconfig
- Пример 12-8. Частота встречаемости отдельных слов
- 7.5.1. Файлы .htaccess
- 7.6. Проще, удобнее, быстрее