# $Id: httpd.ru.txt,v 1.5 2006/11/18 16:04:05 maxim Exp $ # # Russian description of configuration file # # # Общая структура конфиг-файла: # # [глобальные опции всего сервера, по одной на строке] # # Server server1 # [опции для данного виртуального сервера] # # Alias /server_path1 local_path1 # [опции для каталога N1 сервера] # .... # # Alias /server_path2 local_path2 # [опции для каталога N2 сервера] # # Server server2 # [второй сервер и его опции] # # То есть, в конфиге есть три основных контекста: # глобальный, серверный, каталожный. Изменение контекста # происходит, когда встречается описание сервера или каталога сервера # # # Для указания пробела внутри значения опции нужно # использовать backslash: # Mime text/plain;\ charset=windows-1251 txt # Написание в кавычках _не_поддерживается_: # Mime "text/plain; charset=windows-1251" txt # # Для продолжения длинной опции на другой строке, в конце # строки нужно поставить backslash: # Server site.ru www1.site.ru \ # www2.site.ru # # # # Для значений опций размера можно использовать суффиксы: # b - байты # k или K - килобайты (1024 байта) # M - мегабайты (1024 килобайта) # если нет суффикса, подразумеваются килобайты # # Для значений опций времени можно использовать суффиксы: # s - секунды # m - минуты # h - часы # d - дни # W - недели # M - месяцы (30 дней) # Y - года (365 дней) # если нет суффикса, подразумеваются секунды # # Для булевских значений можно использовать следующие обозначения: # on, yes, true - опция включена # off, no, false - опция выключена ### ### Глобальные опции (указаны значения по умолчанию) ### ########## # Адрес и порт, который нужно слушать; # если указан только порт, то слушаются все интерфейсы # Может быть указано несколько директив Listen, # # Примеры: # Listen 80 # Listen 8080 # Listen 11.22.33.44:80 # Listen 11.22.33.44 80 ########## # Максимальное количество одновременных соединений, # при превышении клиенту выдается ошибка 503 # Connections 1000 ########## # Максимальное количество соединений с backend-серверами # (независимо для каждого backend'а) # ProxyConnections 100 ########## # Максимальное количество одновременных соединений с одного # IP (полезно для защиты от DoS-атак с заполнением всего # пула соединений с одного IP) # ConnectionsPerIP 50 ########## # Максимальное время ожидания какой-либо активности соединения # Timeout 60 ########## # Максимальное время ожидания поступления запроса после # установки соединения, а также следующего запроса при # последовательных keep-alive запросах # KeepAliveTimeout 10 ########## # Максимальный размер буфера, используемого при обработке # запроса к backend'у # Если запрашивается больший файл, то 0W-httpd получает от backend'а # блок данных такого размера и ждет, пока клиент не заберет # у 0W-httpd какую-то часть данных # Если файл меньше размера буфера, то 0W-httpd сразу полностью # забирает файл у backend'а, не ожидая, пока клиент получит файл # MaxBuffer 128k ########## # Максимальный размер данных в POST-запросе # При получении POST-запроса 0W-httpd сначала полностью # получает его от клиента, и только потом передает # запрос backend'у # MaxPostSize 256k ########## # Поддержка Low Watermark (только для FreeBSD) # Если определить ненулевое значение LowWatermark, то # ядро будет запрашивать 0W-httpd о порции новых данных # только тогда, когда в системном буфере освободится # LowWatermark байт. Рекомендуется использовать совместно # с опцией SendBuffer, устанавливая LowWatermark немного # меньше, чем SendBuffer. Это уменьшает количество переключений # между ядром и 0W-httpd, а также количество обращений к диску, # повышая производительность 0W-httpd. # (подробнее: man setsockopt / SO_SNDLOWAT) # По умолчанию поддержка выключена. # # Пример: # LowWatermark 120k # SendBuffer 128k ########## # Установка размера буфера вывода. # По умолчанию используется системный размер буфера. # Увеличение размера буфера уменьшает количество обращений # к диску, повышая производительность 0W-httpd # # Пример: # SendBuffer 128k ########## # Отказываться от root'овых прав после инициализации. # # Для того, чтобы 0W-httpd мог захватить 80 порт, ему # нужны права root. Для этого 0W-httpd должен запускаться # root'ом. Если бинарный файл отдать определенному # пользователю (chown user:group 0W-httpd) и поставить # suid-bit (chmod +s 0W-httpd, это делается при установке # через "make install"), то 0W-httpd берет рутовые права # (устанавливает эффективный UID) только на момент захвата # порта. Однако реальный UID остается все равно root'овым, # поэтому теоретически возможен remote-exploit с получением # root'овых прав на сервере. Для того, чтобы 0W-httpd после # инициализации совсем отказывался от рутовых прав и работал # от имени того пользователя, которому принадлежит бинарник, # опция DetachRoot должна быть включена (значение по умолчанию). # # Однако при этом теряется возможность захвата портов (<1023) # после инициализации. Это может потребоваться, если вы добавили # новую директиву Listen и послали 0W-httpd сигнал USR1 - перечитать # конфиг, или после сигнала рестарта: HUP. Поэтому при включенной # опции DetachRoot рекомендую запускать 0W-httpd с враппером # (0W-httpd -w), чтобы при невозможности захвата порта 0W-httpd # перезапустился # # DetachRoot on ########## # Указывать ли название и версию 0W-httpd в поле Server http-заголовков. # Значения: # off - не выдавать поле Server # name - выдавать "Server: 0W" # on - выдавать: "Server: 0W/версия" # # ServerTokens on ########## # Установка поля Expires # Возможные значения: # past - выдавать expires в прошлое (1 год) и дополнительные # http-заголовки, запрещающие кеширование # (Pragma: no-cache, Cache-control: no-cache) # future - выдавать expires в будущее (1 год) # [смещение] - выдавать expires относительно текущего времени # можно использовать суффиксы времени # # (может быть изменено для виртуальных серверов или отдельных каталогов) # # Пример: # Expires 7d - expires на 7 дней в будущее # Expires -1M - expires на 1 месяц в прошлое ########## # Указание списка расширений, к которым применять их автоматическое # преобразование на обратное. Полезно в том случае, если # администраторы пользователей запрещают им скачивать файлы # определенных расширений. Регистр значения не имеет. # # Формат: # Reverse ext1 ext2 ... # # (может быть изменено для виртуальных серверов или отдельных каталогов) # # Пример: # если указать опцию # Reverse mp3 avi mpg mpeg asf wmv mov # то при наличии файла http://server.name/file.mp3 # пользователь может запросить файл http://server.name/file.3pm # и 0W-httpd ему отдаст file.mp3 # ########## # Включить/выключить поддержку последовательных запросов в одном # соединении (если сервер таков, что наверняка известно, что # клиент сделает только один запрос к серверу, то лучше # выключить, чтобы сервер попусту не держал открытым соединение # KeepAliveTimeout секунд) # (может быть изменено для виртуальных серверов или отдельных каталогов) # KeepAlive on ########## # Уровень журналирования запросов (access.log) # on - записывать все запросы # errors - записывать только запросы, вызвавшие ошибки (status >= 400) # off - не записывать ничего # (может быть изменено для виртуальных серверов или отдельных каталогов) # Log on ########## # отбрасывать префикс www. для всех виртуальных серверов. # таким образом, можно не указывать в дополнительных # именах сервера имя с www. (не рекомендуется устанавливать, # есть пока непофиксенный побочный эффект c редиректами) # SkipWWW off ########## # отбрасывать указание порта для имен серверов; # таким образом, сервера www.site.com и www.site.com:8080 # считаются одним виртуальным сервером и обрабатываются # одним блоком сервера www.site.com # Если установить опцию в off, то нужно будет # указывать дополнительные имена или заводить несколько виртуальных серверов: # www.site.com и www.site.com:8080 # (порт 80 отбрасывается всегда) # (та же проблема с редиректами, если используются разные порты, # лучше установить в off и явно указывать все имена) # SkipPort on ########## # Показывать ли листинг файлов в каталоге, если в каталоге нет # индексного файла (показываются только первые 1024 файла) # (может быть изменено для виртуальных серверов или отдельных каталогов) # off - не показывать # on - показывать # simple - показывать упрощенный листинг (только колонки размера # и имён файлов, нет названий колонок со ссылками сортировки) # Listing off ########## # Email администратора, если его указать, он будет добавляться # в сообщения об ошибках, генерируемых сервером (файл не найден, # ошибка сервера и т.п.) # # Пример: # Admin webmaster@site.ru ########## # При открытии статических файлов 0W-httpd использует # пул открытых файлов. Таким образом для нескольких # запросов одного файла файл открывается лишь один раз. # При новом запросе проверяется, открыт ли этот файл, # а так же не был ли он изменен со времени последней # проверки. Проверка на изменение делается не при каждом # запросе, а с определенным периодом, который определяется # опцией FilesCheck. Если файл был изменен, он открывается # заново. # # FilesCheck 30s ########## # После закрытия последнего соединения, использующего # файл, 0W-httpd не закрывает данный файл, а ждет некоторое # время, определяемое опцией FilesKeep # # FilesKeep 10s ########## # Список индексных файлов, которые выдаются при запросе # каталогов, таким образом, что # запросы /dir/index.html и /dir/ эквивалентны # поиск идет слева направо (если в каталоге есть и # index.html и index.htm, то будет выдан index.html) # (может быть изменено для виртуальных серверов или отдельных каталогов) # # Пример: # Index index.html index.htm ########## # Фильтр ответа backend'а. Изменяет содержимое файла, полученного # от backend'а. Для локальных файлов фильтр не действует # (может быть изменено для виртуальных серверов или отдельных каталогов) # # Формат: # Filter content/type magic # # magic - пока только название единственного фильтра: # STRIP_META - убирать теги ("m" заменяется на "!") # # Пример: # Filter text/html STRIP_META ########## # Регулирование доступа # # Директива запрета или разрешения доступа: # Access ["deny"|"allow"] what [> redirect] [[,] ["deny"|"allow"] what] ... # # Тестирование ведется справа налево (и снизу вверх, если в # одном контексте несколько директив Access), если ни одно из # условий не выполнилось, то используется директива Access более # высокого уровня (для каталога - виртуального сервера, для # виртуального сервера - глобальный Access), если глобальной # директивы Access нет, то доступ разрешен. # # Если есть глобальная директива Access, то проверка делается # и сразу после установки соединения (до получения запроса), # если доступ при этом не разрешен, то соединение сразу закрывается. # # # what - одно из условий доступа: # 1) * - все # 2) CC - где CC - двухбуквенное обозначение страны клиента (определяется # по IP-адресу, в каталоге conf должна присутствовать база # по соответствию IP-диапазонов странам) # 3) XX.XX.XX.XX - IP адрес # 4) 192.168.0.0/16 # 192.168.* # 192.168. - несколько вариантов записи сети IP-адресов # 5) User:conf/passwd - доступ по паролю, User - это обозначение # зоны доступа (realm), conf/passwd - файл с криптованными # паролями, путь может быть абсолютным, если realm содержит # пробел, его нужно писать через backslash: # Site\ admin:/etc/httpd/passwd # 6) referrer=value - ограничение доступа по полю referrer # варианты значений: # self: тот же сервер, к которому идет обращение # foreign: referrer непустой и не тот, к которому идет обращение # empty: пустое поле referrer # server: определенный адрес сервера # # > redirect - вместо статуса 403 (Forbidden) делать редирект (302) # на указанный адрес. Если адрес начинается # 1) с http://, то делается редирект на указанный URL, # 2) со слеша (/), то делается редирект на этот # же виртуальный сервер и указанный файл. # 3) иначе делается редирект относительно # данного каталога (Alias) # (пробелы вокруг '>' обязательны) # делайте редирект только за пределы зоны # ограничения, иначе будет циклический редирект, # браузеры его могут и не отслеживать. # # Примеры: # # Разрешить доступ только из России и Украины: # Access deny *, allow ru, allow ua # # Если подряд идет несколько последовательных условий allow или # deny, то ключевое слово (allow|deny) можно указывать только # первый раз, запятую тоже можно опускать: # Access deny *, allow ru ua # # То же самое, но не выдавать ошибку 403 (Forbidden), # а перенаправлять по адресу http://server-name/restricted.html # Access deny * > /restricted.html, allow ru ua # # # Разрешить доступ только с referrer'ом с сервера webwarper.net # и со своего сервера (если referrer пуст или там белиберда, # а не URL, то доступ дается): # Access deny referrer=foreign, allow referrer=webwarper.net # # # Предоставить доступ только пользователям с определенного IP или # авторизованным по паролю пользователям: # Access allow Site\ admin:conf/passwd, allow 217.16.19.218 # (в отличие от других типов условий, на условии парольного # доступа проверка всегда прерывается: либо пользователю # дается доступ, либо запрашивается пароль) # # # На всем сервере site.ru разрешить доступ только из интранет-сети # (адреса 192.168.* и 10.*), а в каталог /pub/ пускать всех: # Server site.ru # Access deny *, allow 192.168.* 10.* # Alias /pub/ /web/pub # Access allow * ########## # # Перечисление "своих" адресов, для которых не применяются # различные ограничения на количество запросов (Antiflood # и ConnectionsPerIP), # # Также при запросах с таких IP ретранслируется заголовок # X-Real-IP, таким образом можно выстраивать цепочку из # серверов, и последний из них получит в X-Real-IP оригинальный # адрес. # # Формат: Trusted [net|IP] ... # # ########## # # Защита от http-флуда (большого количества запросов # с одного IP). Учитываются только те запросы, которые # передаются на бекенды. В глобальном контексте опция # описывает параметры защиты, а в контексте виртуальных # серверов и ресурсов можно только включать/выключать # защиту для данного сервера/ресурса # # Формат: Antiflood requests=R [per=P] [deny=D] [on|off] # где # R - максимальное количество разрешенных запросов # если 0 - защита выключена, по умолчанию - 0. # P - учитываемый период запросов [умолчание - 30 минут]. # D - время, на которое запрещается доступ после того, # как с данного IP будет сделано больше R запросов # за период P [умолчание - 60 минут]. # # значение on или off (по умолчанию - off) определяет, # включать ли по умолчанию защиту. Если защита включена # в глобальном контексте, то она по умолчанию включена # для всех серверов, и для определенных серверов и/или # ресурсов ее можно выключать опцией "Antiflood off". # # Если в глобальном контексте опция выключена, то нужно # явно включать защиту для серверов/ресурсов опцией # "Antiflood on" # # Пример: # Antiflood requests=5000 per=30m deny=1h off # # Server one.ru # ..... # # Server two.ru # Antiflood on # ... # # в данном случае разрешено выполнять 5000 запросов за 30 минут, # если ограничение превышено, то доступ закрывается на 1 час, по # умолчанию защита выключена, то есть для сервера one.ru # ограничений нет, а для сервера two.ru защита включается для # всех запросов, которые отправляются на бекенд. # # После превышения ограничения запрет действует на все запросы, # а не только на запросы, отправляемые на бекенды. ########## # # Кеширование ответов в памяти. Кеширование может применяться # только к статическим файлам и ответам от бекендов, кешируются # только ответы со статусом 200 (OK), из ответов бекендов # кешируются только те ответы, размер которых был известен на # самое начало ответа (указан в HTTP-заголовке), из ответа # бекенда сохраняются только следующие заголовки: # Last-Modified, Expires, Content-type, Content-Encoding. # остальные заголовки теряются. # # # Описание кеширования производится в два этапа, в глобальном # контексте описывается один или несколько именованных кешей, а # затем для нужных серверов или ресурсов назначается # использование одного из ранее описанных кешей. # # Описание кеша: # Cache [имя] [опции] # "имя" необходимо для последующего назначения этого кеша, # если имя не задано, используется имя "default". # # Список опций, все необязательные: # # size=РАЗМЕР - максимальный размер кеша в байтах, при # превышении размера из кеша выталкиваются те # ответы, которые давно не запрашивались # клиентами [умолчание: 128M] # # max=РАЗМЕР - максимальный размер ответа [умолчание: 128k] # # age=СРОК - срок, в течение которого ответ может # отдаваться из кеша, время его жизни в кеше [1h] # # minAge=СРОК - минимальное время жизни ответа в кеше, в # течение этого времени сервером игнорируются # пользовательские запросы на перезагрузку [5m] # # SkipQuery - отбрасывать параметры запроса при поиске # ответа в кеше; при запросе site.ru/test?qwe # будет выдан тот же ответ, что и при # site.ru/test, если он уже есть в кеше [off] # # SkipHost - игнорировать имя виртуального сервера # при поиске ответа в кеше, используется только # путь к файлу [off] # # # Ответ удаляется из кеша в следующих случаях: # 1) если он давно не запрашивался, кеш заполнен и требуется # место для нового ответа; # 2) если истекло время его жизни, заданное в конфигурации кеша; # 3) если истекло время, заданное в заголовке Expires; # 4) если пользователь вызвал функцию безусловной перезагрузки # (в MSIE: Ctrl-F5) # # # Пример использования. # # В глобальном контексте задаем три разных кеша для картинок, # файлов стилей и html-страниц: # Cache images size=600M age=4h max=100k SkipQuery Cache css size=16M age=12h max=20k SkipQuery Cache pages size=128M age=1h # Кеш картинок "images" размером 600Мb, время жизни в кеше - 4 # часа, максимальный размер файлов в кеше - 100kb, игнорируется # различие в параметрах запросов (query string). # # Кеш стилей "css" размером 10Mb, время жизни - 12 часов, # максимальный размер файлов - 20kb, игнорируется различие # в параметрах запросов. # # Кеш страниц "pages" размером 128Mb, время жизни - 1 час, # страницы с различными параметрами кешируются отдельно. # # # Теперь для нужных нам ресурсов включаем кеши: Server site.ru #запросы к разным статическим файлам не кешируются: Alias / /www/site Alias /|text/html,text/plain localhost:80 Cached pages Alias /|image /www/site Cached images Alias /|text/css /www/site Cached css # В принципе, особой необходимости в кешировании статических # файлов нет, операционная система их и так кеширует, # дополнительное кеширование полезно разве что в том случае, # если у вас очень много запросов к узкому кругу файлов, тогда # можно немного сэкономить на запросах к системным функциям # чтения файлов. ########## # Список типов файлов по расширениям # расширение учитывается только последнее (tar.gz указать нельзя) # Для указания mime-типа по умолчанию используйте `*' # Регистр расширений не имеет значения. # (более полный список в примере конфиг-файла httpd.conf) # Mime text/plain;\ charset=windows-1251 * Mime application/octet-stream gz tgz exe Mime application/x-shockwave-flash swf Mime application/zip zip Mime video/x-msvideo avi Mime video/mpeg mpeg mpg Mime audio/mpeg mp3 Mime text/css css Mime text/plain;\ charset=windows-1251 txt Mime text/html;\ charset=windows-1251 html htm Mime image/x-icon ico Mime image/png png Mime image/jpeg jpg jpeg Mime image/gif gif # Список может дополняться/изменять в описании виртуальных # серверов, это полезно, например, для задания определенных # кодировок текстов на определенных серверах, Например, в # глобальном контексте задаем кодировку cp1251: # # Mime text/html;\ charset=windows-1251 html htm # ... # А для одного из серверов int.com задаем кодировку utf-8: # Server int.com # Mime text/html;\ charset=utf-8 html htm # ... ########## # Описание виртуального сервера: # # Server name [name1 name2 ...] # (name1, name2 - дополнительные имена сервера) ########## # Специальное имя сервера "*" обозначает любое имя, # если нужного сервера не найдено по его имени, используется # сервер "*" # # При включенной поддержке patterns можно использовать # шаблонные имена серверов: * - любое количество любых # символов, ? - любой символ, [abcd] - один из набора, # например: *.site.ru # # Если для сервера не определить каталогов (Alias), # то на обращения к серверу будет выдаваться ошибка 404 (not found) ########## Server www.site.com # Опции после Server и перед первым Alias являются опциями # сервера по умолчанию, изменяют глобальные умолчания и сами # могут быть изменены в описании каталогов (Alias). # Можно использовать: # Admin, Log, Index, KeepAlive, Listing, Filter, # Access, Expires, Reverse # KeepAlive on Log off # Список ресурсов (каталогов) сервера: # Alias /server_path local_path # Поиск соответствующего каталога ведется снизу вверх # # # localpath может быть одним из: # 1) путь к статическим файлам (если начинается со слеша "/"): Alias / /usr/local/apache/data # # 2) http-редиректом (если начинается с http://): # выполнится редирект (статус 301, Moved Permanently) # http://server/old_stuff/123.html -> http://old.name/off.html?/123.html Alias /old_stuff/ http://old.name/off.html? # # 3) backend-сервер: IP:PORT/path или hostname:PORT/path # 0W-httpd выступает в роли прокси-сервера (frontend, accelerator) # может быть указано несколько backend'ов, тогда запросы # будут отправляться им по очереди (или если hostname # резолвится в несколько IP). # реальный IP клиента передается в поле X-Real-IP, если # backend это Apache, то для его обработки есть модуль mod_realip # (ftp://ftp.lexa.ru/pub/apache-rus/contrib/mod_realip-1.0.tar.gz) Alias / localhost:80 Alias / host1.site.ru:8080 host2.site.ru:8080 host3.site.ru:8080 # # 4) спец-обработчики: STATUS, EMPTY, PIXEL, STORAGE # STATUS: Выдается текущее состояние сервера Alias /status STATUS # EMPTY: на все запросы выдается файл нулевой длины, # content-type выставляется в соответствии с расширением файла. # существование файла не проверяется Alias /dummy EMPTY # PIXEL: выдавать gif-картинку 1x1 (прозрачный gif) # Alias /p.gif PIXEL # при этом к картинке можно обращаться с параметром, обозначающем # цвет: по запросу http://server.name/p.gif?0000FF будет выдан # пиксел синего цвета # # PIXEL RRGGBB: выдавать gif-картинку 1x1 определенного цвета Alias /blue.gif PIXEL 0000FF # STORAGE: обработка файлового хранилища, при котором доступ # к файлам предоставляется только через специальный скрипт # сайта. # # Как это работает и зачем нужно. # # Допустим, у вас есть набор каких-то интересных пользователям # файлов (видео, музыка, программы и т.п.), но вы не хотите, # чтобы пользователи скачивали эти файлы напрямую, а хотите, # чтобы они обязательно предварительно заходили на вашу страничку # с кучей баннеров. Для этого вы организуете доступ к файлам # следующим образом (например, сайт у вас называется site.ru, # а расположен в каталоге /home/site/web) # 1) каталог с этими ценными файлами: # /home/site/web/files # 2) каталог, в котором будут ссылки (sym-links) на эти файлы: # /home/site/web/storage # 3) какой-нибудь скрипт, который дает доступ к файлу: # http://site.ru/file.php # # Допустим, есть файл с оригинальным названием cool_music.mp3, # который хранится в реальном файле /home/site/web/files/2005/04/04/123.mp3 # И для доступа к этому файлу пользователь должен открыть # страницу http://site.ru/file.php?id=123 # # Что должен сделать скрипт: # 1) он должен создать symlink в каталоге storage с каким-нибудь # случайным именем, который будет указывать на реальный файл: # symlink("../files/2005/04/04/123.mp3", "storage/123da71ee"); # (путь дается относительно каталога storage) # 2) дать пользователю следующую ссылку на файл: # http://site.ru/storage/123da71ee/cool_music.mp3 # # # Через какое-то время (например, через 2 часа) симлинк нужно удалить, # например, из крона: # */30 * * * * cd web/storage && find . -type l -mmin +120 | xargs -r rm # # Alias /storage STORAGE /home/site/web/storage # чтобы нельзя было открыть файл напрямую, доступ к /files закрывается: Alias /files /home/site/web/files Access deny * # После директивы Alias могут идти некоторые директивы, # изменяющие умолчания виртуального сервера и глобальные # установки для данного Alias'а: Log, Index, KeepAlive, # Listing, Filter, Access, Expires, Reverse ##### # В поле server_path можно использовать спец-символы, # ограничивающие область server_path: # Знак `$' для обозначения точного совпадения # полезен, например, для редиректа только главной страницы # сервера: Alias / /usr/local/apache/data Alias /$ http://rip.site/we-are-down.html Alias /index.html$ http://rip.site/we-are-down.html # # Знак `|' для обработки определенных типов файлов. # Тип определяется по расширению запроса и списку Mime из конфига, # для перечисления нескольких расширений использовать запятую. # Можно использовать лишь начало типа. # # Пример: # обрабатывать картинки самому и устанавливать для них поле Expires # отсылать запросы страниц на бекенд, а статические файлы обрабатывать # самому: Alias / /home/site/web Alias /|text/html,text/plain localhost:80 Alias /|image /home/site/web Expires future # # Знак `*' для обработки определенных расширений файлов (точнее, окончаний), # для перечисления нескольких расширений использовать запятую # (регистр не имеет значения) # # # обрабатывать картинки самому, остальные запросы отправлять на backend: Alias / localhost:80 Alias /*.gif,.jpg,.png /usr/local/apache/data # можно добавлять `*' у каждого расширения, если так удобнее: Alias /*.gif,*.jpg,*.png /usr/local/apache/data # или наоборот: явно указывается, что html'и и запросы каталогов # отправляются на backend, остальное - сами Alias / /usr/local/apache/data Alias /*.html,.htm,/ localhost:80 ##### # В поле local_path можно использовать спец-символ `$', # в этом случае для всех запросов данного Alias'а будет # использован именно указанный local_path # Пример: # на любой запрос иконки отдавать одну и ту же иконку: Alias /*/favicon.ico /home/site/web/favicon.ico$ ########## # Еще один виртуальный сервер # последний виртуальный сервер также обрабатывает # все запросы, у которых не было указано поле Host # (такие запросы могут посылать устаревшие браузеры) Server www.dot.com dot.com Alias / /usr/local/apache/dot/data Alias /cgi-bin localhost:80/cgi-bin KeepAlive off Log on # (обе последние директивы относятся к /cgi-bin)