16.11. Пример файла httpd.conf

16.11. Пример файла httpd.conf

В этом параграфе приведен пример стандартной конфигурации сервера Apache. Каждому блоку листинга 16.15 сопутствуют комментарии, которые помогут вам разобраться с различными настройками сервера.

Листинг 16.15. Пример файла 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.

# Первый модуль обеспечивает протоколирование.

# Он запишет информацию

# в протокол access_log, когда буфер объемом 4К

# переполнится.

#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 более

# безопасна, но xssi содержит больше функций.

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/mod_alias.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_module 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.c

#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.c

AddModule mod_negotiation.c

AddModule mod_status.c

AddModule mod_info.c

AddModule mod_include.с

#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.с

AddModule mod_alias.с

# Модуль mod_jserv должен быть объявлен до mod_rewrite.

<IfDefine HAVE_JSERV>

 AddModule mod_jserv.c

</IfDefine>

AddModule mod_rewrite.c

AddModule mod_access.c

AddModule mod_auth.c

AddModule mod_auth_anon.с

#AddModule mod_auth_dbm.с

#AddModule mod_auth_db.c

AddModule mod_digest.c

#AddModule mod_cern_meta.c

AddModule mod_expires.c

AddModule mod_headers.c

AddModule mod_usertrack.c

#AddModule mod_example.c

#AddModule mod_unique_id.c

AddModule mod_so.с

AddModule mod_setenvif.с

# ----------- 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/а.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.glf .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 /etc/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, который находится в вашем

# пространстве имен, то есть на документ,

# который находится в одном из подкаталогов каталога

# 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

# Обычно для модуля PHP4 (он не является частью 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 ext1

# Для использования сценариев 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 "Ошибка сервера.

#

# 2) локальное перенаправление на документ или сценарий

#ErrorDocument 404 /missing.html

#ErrorDocument 404 /cgi-bin/missing_handler.pl

#

# 3) внешнее перенаправление

#ErrorDocument 402 http://some.other_server.com/

#subscription_info.html

#

#Модуль 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

# Следующие директивы отключают ответы HTTP/1.1 для браузеров,

# которые не поддерживают протокол HTTP/1.1

BrowserMatch "RealPlayer 4.0" force-response-1.0

BrowserMatch "Java/1.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 задает электронный адрес веб-

# мастера вашего веб-узла. В случае возникновения ошибок

# именно по этому адресу будет отправлено сообщение.

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 %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

# Можно определить тип протокола

# Если вы хотите протоколировать общую информацию

#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/httpd /httpd.lock

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/misc/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_аlias_modulеmodulеs/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

Данный текст является ознакомительным фрагментом.