среда, 13 февраля 2013 г.

Краткое руководство по директивам Apache

Очень хорошая книга.

Администрирование Web-сервера Apache и руководство по электронной коммерции. Скотт Хокинс.


Запись правил в Apache производится HTML-тэгами.
Запись правил в Nginx производится как в JavaScript через объекты и фигурные скобки http {}.

Apache2.2/conf/httpd.conf - главный конфигурационный файл сервера. В нем задаются: имя сервера, сетевые установки, виртуальный хостинг.

Режим работы сервера.

ServerType standalone

Задание имени ситемного пользователя и его группы.

User apache
Group 506

Ограничить зону действия директив DirectiveA каталогом /home/site2 и всеми подкаталогами, содержащимися в нем.

<Directory /home/site2>
    DirectoryA
</Directorry


Ограничить зону действия директив DirectiveA диапазоном каталогом, содержащим регулярное выражение /home/site[1-3] и всеми подкаталогами, содержащимися в нем.

<Directory "/home/site[1-3]">
    DirectoryA
</Directory

.htaccess
Ограничить зону действия директив DirectiveA через рамещение файла .htaccess в каталоге с файлами, по отношению к которому эти директивы будут применяться.
В конфиге для использования файлов .htaccess необходимо прописать AllowOverride ALL

Ограничить зону действия директив DirectiveA по URL.

<Location /status>
    SetHandler server-status
</Location>

<Location /secure_stuff>
    order deny, allow
    deny from all
    allow from 127.0.0.1
</Location>

Ограничить зону действия директив DirectiveA по URL, содержащим регулярное выражение /status[1-3].

<LocationMatch "/status[1-3]">
    SetHandler server-status
</Location>

Ограничить зону действия директив DirectiveA применительно к отдельному файлу.

<Files .htaccess>
    Order deny, allow
    Deny from all
</Files>

Ограничить зону действия директив DirectiveA применительно к нескольким файлам. определенным по отдельному регулярному выражению /pic[1-3].jpg.

<FilesMatch "/pic[1-3].jpg">
    Order deny, allow
    Deny from all
</FilesMatch>

Используемые директивы внутри скобок <Directory >, <Location >, <Files >

AllowOverride All - разрешить перезаписать сходные директивы в файле .htaccess
AllowOverride None - запретить перезаписать сходные директивы в файле .htaccess

order allow, deny - задать порядок следования ниже лежащих директив (разрешить, затем запретить)
order deny, allow - задать порядок следования ниже лежащих директив (запретить, затем разрешить)

allow - задать IP-адрес или доменное имя, которому будет разрешен запрос к серверу.
deny - задать IP-адрес или доменное имя, которому будет запрещен запрос к серверу.

allow from all - разрешить всем IP-адресам или доменным именам отправлять запрос к серверу.
deny from all - запретить всем IP-адресам или доменным именам отправлять запрос к серверу.

Задать папку в которой по умолчанию будут располагаться все HTML-файлы.

DocumentRoot /opt/apache/htdocs

Задать папку в которой будут размещаться домашние страницы пользователя.

UserDir public_html

Задать дефолтные имена файлов, которые будут являться главными HTML-файлами

DirectoryIndex index.html index.htm index.cgi index.shtml (Пример http://www.site.com/ Запустит файл index.html)


AccessFileName .htaccess - эта директива задает имя файла в котором в случае его обнаружения в обычной папке можно будет наути директивы управления доступом.

Задать тип MimeType по умолчанию, если MimeType сервер не смог определить.

DefaultType text/plain

Задание связывания соотвествия URL-адреса месту расположения файлов в папке на жестком диске сервера.

Alias /icons/ /usr/local/etc/httpd/icons/ (Alias /адрес/ /папка/на/жестком/диске/с/картинками/например/)

Задание связывания соотвествия URL-адреса месту расположения сценарием на языке программирования в папке на жестком диске сервера.

ScriptAlias /cgi-bin/ /usr/local/etc/httpd/cgi-bin/ (ScriptAlias /адрес/ /папка/на/жестком/диске/с/php/кодом/например/)

Добавить ассоциацию с Mimetype

AddType

Добавление ассоциации с типом MimeType

AddType application/x-httpd-php .php

Тип MimeType По умолчанию.

DefaultType text/html

Определение требуемых характеристик железа для сервера Apache.

Определение браузера по user-agent. Вывод содержимого по для определенного браузера.

BrowseMatch Mozilla/2 nokeepalive

Адрес электронной почты администратора сервера.

ServerAdmin you@yoursite.org

Корневой каталог сервера, куда установлен Apache. Относительного этого каталога можно задавать относительные пути.

ServerRoot /opt/apache

Задание IP-адреса локального компьютера, на котором установлен Apache. Если на компьютере только один сетевой интерфейс, то эту директиву задавать не стоит, так как по умолчанию сервер прослушивает все соединения.

Чтобы Apache поддерживал только один IP-адрес задайте:

BindAddress 192.169.1.10

Чтобы Apache игнорировал все запросы исходящие не от локального компьютера задайте:

BindAddress 127.0.0.1

Для работы со всеми возможными соединениями задайте:

BindAddress *

BindAddress может быть задан только 1 раз.

При необходимости прослушивать 2 и более IP-адреса, но не все возможные, используйте директиву Listen.

Определение папки для записи файла логов об ошибках.

ErrorLog logs/error_log (относительно папки, где установлен сервер)

или

ErrorLog /var/logs/apache (абсолютный адрес)

Определение папки для записи файла логов об обменен данными сервера с внешним миром.

TransferLog logs/access_log

Задание имени сервера, которое будет отсылаться браузерам вместо имени компьютера.

ServerName www.example.com

Разрешить proxy-серверам кэшировать заголовки.

CacheNegotiatedDocs

Ограничение времени существования неактивных соединений.

Timeout 150 (секунд)

Ращрешить поддержание устойчивых соединений, которые позволяют брузеру запросить более одного блока данных одновременно. Включение этой опции полезно всем.

KeepAlive On

Установка максимального числа запросов разрешенных во время одного устойчивого соединения. Значение 0 означает Неограниченно.

MaxKeepAliveRequest 0

Задание количества секунд, на протяжении которых во время устойчивого соединения сервер будет ожидать следующего запроса.

KeepAliveTimeout 15

Установка количества одновременно подключенных к серверу браузеров.

MaxClients 150

Запус и тестирование сервера из командной строки.

apachectl configtest
apechectl start

Виртуальный хостинг.

Папка пользователя. Такой подход используется редко.

UserDir somedirectory - эта директива предназначена для того, чтобы показать, что Web-содержимое будет найдено в конкретном подкаталоге корневого каталога пользователя.
Когда работает эта директива сервер принимает запросы в виде:

http://www.example.com/~userguy

В результате файлы будут взяты из папки /home/userguy/somedirectory

Например

http://www.example.com/~timmy/x-files.html

UserDir /var/user/webspace

Файл взят из папки /var/user/webspace/timmy/x-files.html


Задание прослушивания только одногопорта.

Port 4444


Задание прослушивания одного или более IP-порта

Listen 80
Listen (пусто - значит локальный порт)

Можно использовать для задания прослушивания определенных IP-адресов

Listen 192.168.1.2:80
Listen 192.168.1.2: (все порты)


Виртуальный хостинг по имени. Самый распространеный.
Необходимо:
1. С помощью директивы NameVirtualHost определить IP-адрес, который будет использоваться для виртуального хоста.
2. С помощью пары директив VirtualHost выделить директивы, которые будут иметь отношение только к определенному виртуальному Web-узлу.

NameVirtualHost 192.168.1.1:80

Запуск виртуального хостинга.

<VirtualHost 192.168.1.1>
    ServerName www.example.org (Обязательно нужно прописывать ServerName для IP-адреса)
    DocumentRoot /some/other/directory (Обязательно нужно прописывать DocumentRoot, чтобы из папки брались файлы)
</VirtualHost>

или

<VirtualHost www.idiots.org> (ServerName прописывать не нужно)
    DocumentRoot /some/other/directory (Обязательно нужно прописывать DocumentRoot, чтобы из папки брались файлы)
</VirtualHost>

Что можно добавить внутрь скобок <VirtualHost >

ServerName www.site2.com - доменное имя сайта
DocumentRoot /home/site2 - адрес папки с файлами для сайта
ServerAdmin admin@site2.com -  почтовый адрес администратора сайта
ErrorLog /home/logs - адрсе папки для записи логов сервера для сайта
transferLog /home/trans -  адрес папки для записи логов передачи данных от сервера для сайта

Директивы, которые нельзя прописывать внутри скобок виртуального хостинга
BindAddress
Listen
MaxSpareServers
MinSpareServers
MaxRequestPerChild
PidFile
ServerRoot
ServerType
TypeConfig
NameVirtualHost

Отстальное можно.


Proxy-сервер - это сервер посредник для обслуживания внешнего или внутреннего трафика при передаче запросо от компьютера к компьютеру.

Можно настроить proxy на обработку запросов поступающих на порт отличный от стандартного (80).

Listen 8888
<VirtuaHost 192.168.100.1:8888>
... директивы ...
</VirtuaHOst>

Настройка Proxy-сервера.

Для запуска proxy-сервера достаточно прописать одну директиву

Proxe-Requests On

Далее идет настройка proxy-сервера на прослушивание входящего трафика по порту 8888.
А потом для работы соэтим портом создается виртуальный хост с адресом prxoy.asgard.com

Listen 8888
<VirtualHost 192.168.100.1:8888>
    ServerName proxy.asgard.com
    ProxyRequests On
</VirtualHost>

Ограничение доступа к определенным сайтам.

ProxyBlock kiddiporn.com snuffulm.org (proxy-сервер не даст посмотреть эти сайты при прохождении запроса через себя)

Пересылка запросов на другие proxy-серверы.

ProxyRemote ftp http://ftpsrvr.local.com:8080 (пересылка запроса дальше)

Задание запрета на проксирование.

NoProxy .example.com (предотвратит переход запросов на удаленный proxy-сервер)

Зазеркаливание (Задание переадресации redirect) сайта.

ProxtPass /distant/mirror http://www.tuchman.edu (переадресует все локальные запросы к сайту http://www.example.edu/distant/mirror при наборе адреса http://www.tuchmnan.edu)

Задание домена по умолчанию для переводаьпроксирования на него (позволяет короче вбивать адрес)

ProxyDomain .example.com

Это позволит после введения краткого URL http://www получить доступ к сайту http://www.example.com

Управление доступом к Proxy-серверу с использоваением шаблонов для указания того, что все каталоги находятся под управлением proxy.

<Directory proxy:*>
    order deny, allow
    deny from список IP-адресов
    allow from список IP-адресов
</Directory>

Для включения кэширования страниц необходимо задать адрес каталога в котором кэш будет располагаться и все.

CacheRoot /cache

Задание максимально рамера папки с кэшем

CacheSize 10240 (10 мегабайт)

Задание ограничения глубины вложенности создания папокпри кэшировании внутри папки CacheRoot

CacheDirLevels 3 (3 уровня вглубь папки CacheRoot)

Задание ограничения длины пути к кэш-файлам

CacheDirLength 25 (предел длины имен подкатлогов 25 символов)

Задание срока хранения кэша

CacheMaxExpire - максиму времени хранения в часах
CacheDefaultExpire - если файл поступает без срока то ставится время хранения по умолчанию
CacheLastModifiedFactor - если файл поступает без срока то вычисляется время хранения от текущего времени до времени последней модификации файла и умножается на этот коэффициент

Задание интервалов между удалениями просроченного кэше (Периодичность дуланения) в часах

CacheInterval 10.5 (10 часов 30 минут)
CacheIntervel .5 (30 минут)

Отключение директивы кэширования для файлов сайта

NoCache news www.fool.com

NoCache * (полностью отключить кэширования для всего)

Настройка формата записи логов.

LogFormat "Host=%h Date=%t BytesReturned=%b"

Отказ в подступе при попытке загрузки файлов из папки.

<Directory />
    Order deny, allow
    Deny from all
</Directory>

<Directory /opt/apache/htdocs>
    Order deny, allow
    Allow from all
</Directory>


Запретить перезапись директив в .htaccess

AllowOverrides None

Разрешить доступ к файлам.

<Directory /some/directory>
    Allow from all
</Directory>


<Directory /some/directory>
    order deny, allow
    deny from all
    allow from fenris.asgard.com   
</Directory>

<Directory /some/directory>
    order deny, allow
    deny from all
    allow from 192.168.100.0/255.255.252.0
</Directory>

Разрешить доступ только из определенного браузера.

BrowserMatch ^Mozill netscape_yes
<Directory /some/directory>
    order deny, allow
    deny from all
    allow from env==netscape_yes
</Directory>

Задание типа бэйсик идентификации
<Directory /some/directory>
    AuthName "Example of Access Control"
    AuthType Basic
    AuthUserFile /etc/security/.htpasswd
    Require valid-user
</Directory>

зазадние страницы для авторизации

ErrorDocument 401 /site_error.html

Включение шифрования SSL

NameVirtualHost 64.22.73.226
<VirtualHost 64.82.73.226>
    ServerName www.securesite.com
    DocumentRoot /home/site3
    SSLEngine on
    SSLCertificate /var/ssl/server.crt
    SSLCACertificateFile /path/to/certificate
    SSLLog /var/log/ssllog
    SSLLogLevel warn   
</VirtualHost>

Можно еще добавить

    SSLCertificetKeyFile /var/ssl/server.key
    SSLCACertificatePath /some/secure/directory
    SSLVerifyClient 1
    SSLVerifyDepth 3

Включени инклюдов в HTML на стороне сервера.

<Location /ssdir>
   Options +Include
</Location>

Включения режима исполнения скрипотв на языках программирования CGI.

<Directory /usr/local/cgi-bin>
    Options +ExecCGI
</Directory>

Задания привязок URL к папкам со скриптами на языках программирования.

ScriptAlias /cgi-bin/ /usr/local/cgi-bin/

Пометить всю папку, как папку с исполняемыми скриптами.

<Directory /usr/loacl/cgi-bin>
    SetHandler cgi-script
<Directory>

Определение типа файлов как исполняемые.

AddHandler cgi-script .pl .cgi

Задание MimeType файлов

AddType application/x-httpd-cgi .pl

Задание папки записи логов в cgi-скриптах

ScriptLog /var/logs/cgilog

Переадресация через mod_rewrite

Rewriteengine On - включение режима перезаписи URL
RewriteRule ^/$ /apache backup [R] - задание переадресации

RewriteCond

Интересно до стр 150

Пример файл /etc/hosts

192.168.100.1    odin.example.com
192.168.100.80  fenris.asgard.com fenris
192.168.100.10  loki.asgard.com loki

Комментариев нет:

Отправить комментарий