Очень хорошая книга.
Администрирование 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
Комментариев нет:
Отправить комментарий