LINUX-сервер пошаговые инструкции инсталляции и настройки - Бруй В. В. , Карлов С. В.
.pdfГлава 34. Apache HTTP Server |
|
501 |
AddCharset KOI8-r |
.koi8-r .koi8-ru |
|
AddCharset KOI8-ru |
.koi8-uk .ua |
|
AddCharset ISO-10646-UCS-2 |
.ucs2 |
|
AddCharset ISO-10646-UCS-4 |
.ucs4 |
|
AddCharset UTF-8 |
.utf8 |
|
ErrorDocument 400 "Server could not understand this request." ErrorDocument 401 "Server could not verify your access authorization." ErrorDocument 403 "Access Forbidden -- Go away."
ErrorDocument 404 "Error! The requested page do not exist" ErrorDocument 405 "Method not allowed for the requested URL." ErrorDocument 408 "Server closed the network connection." ErrorDocument 410 "Requested URL no longer available." ErrorDocument 411 "Requested method Requires a valid header."
ErrorDocument 412 "Precondition request failed positive evaluation." ErrorDocument 413 "Method not allowed for the data transmitted." ErrorDocument 414 "Requested URL exceeds the capacity limit." ErrorDocument 415 "Server temporarily unavailable -- Maintenance downtime."
ErrorDocument 500 "Server encountered an internal error." ErrorDocument 501 "Server does not support the action requested." ErrorDocument 502 "Proxy server received an invalid response." ErrorDocument 503 "Server temporarily unavailable -- Maintenance downtime."
ErrorDocument 506 "Access not possible."
<IfModule mod_setenvif.c> BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0 BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0 BrowserMatch "JDK/1\.0" force-response-1.0
BrowserMatch "Microsoft Data Access Internet Publishing Provider" redi- rect-carefully
BrowserMatch "^WebDrive" redirect-carefully </IfModule>
### Section 3: Virtual Hosts
#
### Виртуальный хост, например, с витриной магазина
### с доступом по протоколу http
#
NameVirtualHost eshop.bruy.info:80
<VirtualHost eshop.bruy.info:80> ServerAdmin sales@test.bruy.info ServerName eshop.bruy.info DocumentRoot "/var/www/eshop/html/"
#Каталог для html-документов
<Directory "/var/www/eshop/html/"> Options None
AllowOverride None Order allow,deny Allow from all
</Directory>
#Каталог с ограниченным доступом.
#Вряд ли имеет смысл создавать его на этом
#виртуальном хосте так логины и пароли передаются
#по сети в формате обычного текста.
#Каталог с ограниченным доступом лучше создать на
#виртуальном хосте с поддержкой протокола SSL.
502 |
Часть 10. Программное обеспечение для организации службы HTTP-сервера |
<Directory "/var/www/eshop/html/private/"> Options None
AllowOverride AuthConfig AuthName "Restricted Section" AuthType Basic
AuthDBMType GDBM
AuthDBMUserFile /etc/httpd/conf/dbmpasswd Require valid-user
</Directory>
#Каталог для сценариев
ScriptAlias /cgi-bin/ "/var/www/eshop/cgi-bin/" <Directory "/var/www/eshop/cgi-bin/">
Options None AllowOverride None Order allow,deny Allow from all
</Directory>
ErrorLog /var/log/httpd/error_eshop_log
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" TransferLog /var/log/httpd/access_eshop_log
</VirtualHost>
## SSL Global Context |
|
|
# |
|
|
<IfModule mod_ssl.c> |
|
|
AddType application/x-x509-ca-cert |
.crt |
|
AddType application/x-pkcs7-crl |
.crl |
|
SSLPassPhraseDialog |
builtin |
|
SSLSessionCache |
none |
|
SSLSessionCacheTimeout |
300 |
|
SSLMutex |
sem |
|
SSLRandomSeed startup |
file:/dev/urandom 1024 |
|
SSLRandomSeed connect |
file:/dev/urandom 1024 |
|
## SSL Virtual Host Context
#
###Виртуальный хост, например,
###с информацией для зарегистрированных клиентов
###с доступом по протоколу https
NameVirtualHost eshop.bruy.info:443
<VirtualHost eshop.bruy.info:443> ServerAdmin sales@test.bruy.info ServerName eshop.bruy.info DocumentRoot "/var/www/eshopssl/html"
#Каталог для html-документов
<Directory "/var/www/eshopssl/html/"> Options Indexes
AllowOverride None Order allow,deny Allow from all
</Directory>
#Каталог с ограниченным доступом
<Directory "/var/www/eshopssl/html/private/"> Options None
AllowOverride AuthConfig AuthName "Restricted Section" AuthType Basic
Глава 34. Apache HTTP Server |
503 |
AuthDBMType GDBM
AuthDBMUserFile /etc/httpd/conf/dbmpasswd Require valid-user
</Directory>
#Каталог для сценариев
ScriptAlias /cgi-bin/ "/var/www/eshopssl/cgi-bin/"
<Directory "/var/www/eshopssl/cgi-bin/"> Options None
AllowOverride None Order allow,deny Allow from all
</Directory>
ErrorLog /var/log/httpd/error_eshopssl_log
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" TransferLog /var/log/httpd/access_eshopssl_log
SSLEngine on
SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL SSLCertificateFile /usr/share/ssl/certs/www.crt SSLCertificateKeyFile /usr/share/ssl/private/www.key
SSLVerifyClient none SSLVerifyDepth 10
SetEnvIf User-Agent ".*MSIE.*" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0
CustomLog /var/log/httpd/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
</IfModule>
В разделе Section 1: Global Environment приведенного конфигурационного файла содержатся директивы, определяющие поведение сервера вцелом.
Директива:
ServerRoot "/etc/httpd"
определяет местоположение каталога с файлом /etc/httpd. Директива:
PidFile /var/run/httpd.pid
определяет местоположение pid-файла, создаваемого при запуске демона httpd. Директива:
ServerTokens Prod
предназначена для управления объемом информации, выдаваемой сервером в ответах на запросы клиентов. В принципе, в заголовках запросов может содержаться информация о версии сервера, типе используемой операционной системы, модулях и т. п. С точки зрения обеспечения безопасности, не плохо было бы ограничить объем выдаваемой информации только названием Web-сервера – Apache. Для этого используйте параметр Prod.
Директива:
ServerSignature Off
используется для исключения из сообщений об ошибках информации о версии сервера. Директива:
Timeout 60
определяет максимальный интервал времени ожидания, измеряемый в секундах, по истечении которого сервер разрывает соединение. Значение 60, установленное в рассматриваемом примере, позволяет повысить производительность сильно загруженного сервера. Однако при плохих каналах связи, используемых клиентами, это время нужно увеличить до 300, в противном случае они не смогут получить доступ к серверу.
Глава 34. Apache HTTP Server |
505 |
ServerAdmin apacheadmin@test.bruy.info
используется для определения адреса электронной почты, куда будут отсылаться любые сообщения об ошибках, возвращаемых клиенту. Не забудьте изменить данное значение на реальный почтовый адрес администратора вашего сервера (авторам этой книги совершенно не интересно получать сообщения об ошибках на чужих серверах).
Директивы:
ServerName test.bruy.info
используется для определения имени хоста. Здесь вы должны ввести имя именно вашей системы, в соответствии с записями в файле зоны вашего DNS-сервера.
Блок директив:
DocumentRoot "/var/www/htdocs" <Directory />
Options None AllowOverride None Order deny,allow Deny from all
</Directory>
запрещает доступ к корневому каталогу вашего сервера. Это сделано, во-первых, потому что в нем содержатся страницы на нескольких языках, устанавливаемые при инсталляции Apache и имеющие ссылку на руководство. Во-вторых, потому что в дальнейшем рассмотрении мы собираемся конфигурировать сервер в режиме поддержки виртуальных серверов. В этом случае, если вы даже разрешите доступ к каталогу /var/www/htdocs, при обращении к серверу test.bruy.info пользователь будет получать доступ к корневому каталогу первого из упомянутых в конфигурационном файле виртуальных серверов.
После инсталляции и настройки сервера авторы настоятельно рекомендуют удалить все лишние файлы из каталога /var/www/htdocs и каталог руководства:
[root@test tmp]# rm –f /var/www/htdocs/* [root@test tmp]# rm –rf /var/www/manual/
Блок директив:
<Files .pl> Options None
AllowOverride None Order deny,allow Deny from all
</Files>
запрещает доступ к файлам, имеющим разрешение *.pl. Это расширение обычно используется для файлов сценариев, написанных на языке Perl. Если в последующем понадобится, можете разрешить доступ к файлам с расширением *.pl только в некоторых каталогах.
Блок директив:
<IfModule mod_dir.c>
DirectoryIndex index.htm index.html index.php default.php index.shtml index.php3
</IfModule>
используется для определения последовательности поиска индексных файлов, т. е. файлов, которые выдаются по умолчанию при получении HTTP-запроса, содержащего URL каталога. Для повышения производительности сервера в директиве DirectoryIndex рекомендуется включать только те файлы, которые действительно используются в качестве индексных на вашем сервере.
Директива:
HostnameLookups Off
отключает запросы к DNS-серверам для получения информации об имени хоста, с которого осуществляется запрос к серверу. Для повышения производительности сервера рекомендуется использовать значение "off".
Блок директив:
LogLevel debug
ErrorLog /var/log/httpd/error_log
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined
CustomLog /var/log/httpd/access_log combined
определяет пути к файлам регистрации, объем и содержание записываемой в них информации. Используемое в директиве LogLevel значение debug соответствует максимальному объему выводимой информации и может быть использовано только на этапе настройки и тестирования сервера. При штатной эксплуатации сервера рекомендуется использовать значение notice.
Блоки директив:
<IfModule mod_mime_magic.c>
506 Часть 10. Программное обеспечение для организации службы HTTP-сервера
MIMEMagicFile /etc/httpd/conf/magic
</IfModule>
и
<IfModule mod_mime.c>
TypesConfig /etc/httpd/conf/mime.types AddEncoding x-compress Z
AddEncoding x-gzip gz tgz AddType application/x-tar .tgz
AddType application/x-httpd-php .php AddType application/x-httpd-php .php3 AddType application/x-httpd-php .shtml
AddType application/x-httpd-php-source .phps
</IfModule>
используются для определения типов файлов, обслуживаемых сервером, и для определения алгоритма выдачи их по запросам клиентов.
Блок директив:
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" <Directory "/var/www/cgi-bin/">
Options None AllowOverride None Order allow,deny Allow from all
</Directory>
</IfModule>
определяет общий для всего сервера каталог, в котором могут размещаться файлы сценариев. Этот каталог может использоваться и виртуальными серверами. Однако для большей наглядности в дальнейшем мы определили для каждого виртуального сервера свой собственный каталог для файлов сценариев. Тем не менее, в каталоге /var/www/cgi-bin/ возможно размещение файлов сценариев. Доступ к ним может быть осу-
ществлен с помощью URL вида: http://test.bruy.info/cgi-bin/name_script.cgi.
Блок директив:
<IfModule mod_autoindex.c> IndexOptions FancyIndexing
AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
…
ReadmeName README.html
HeaderName HEADER.html
IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
</IfModule>
Блок директив:
AddLanguage en .en
AddLanguage ru .ru |
|
|
AddDefaultCharset koi8-r |
|
|
AddCharset ISO-8859-1 |
.iso8859-1 |
.latin1 |
AddCharset ISO-8859-5 |
.iso8859-5 |
.latin5 .cyr .iso-ru |
AddCharset WINDOWS-1251 .cp-1251 |
.win-1251 |
|
AddCharset CP866 |
.cp866 |
|
AddCharset KOI8-r |
.koi8-r .koi8-ru |
|
AddCharset KOI8-ru |
.koi8-uk .ua |
|
AddCharset ISO-10646-UCS-2 .ucs2 |
|
|
AddCharset ISO-10646-UCS-4 .ucs4 |
|
|
AddCharset UTF-8 |
.utf8 |
|
используется для поддержки кодировок русского языка. При этом, директива:
AddDefaultCharset koi8-r
определяет кодировку, выдаваемую в заголовке клиенту. В рассматриваемом примере мы используем кодировку koi8-r, и следовательно, страницы, обслуживаемые сервером, должны быть в этой же кодировке. В настоящее время кодировка windows-1251 является более распространенной и проще интегрируется со многими программами, поэтому может оказаться более удобным страницы сервера выполнять в кодировке windows-1251. Для их корректного отображения измените значение директивы AddDefaultCharset на:
AddDefaultCharset windows-1251
Блок директив:
ErrorDocument 400 "Server could not understand this request." ErrorDocument 401 "Server could not verify your access authorization." ErrorDocument 403 "Access Forbidden -- Go away."
Глава 34. Apache HTTP Server |
507 |
…
ErrorDocument 502 "Proxy server received an invalid response." ErrorDocument 503 "Server temporarily unavailable -- Maintenance downtime."
ErrorDocument 506 "Access not possible."
определяет реакцию сервера на сообщения о различных ошибках. Вместо сообщения, указанного в кавычках, может использоваться путь к файлу, содержащему сообщение об ошибке или URL. Например, переход к странице, выполненной в дизайне вашего сервера, и сообщающей об ошибке 403 может быть выполнен с помощью директивы:
ErrorDocument 403 /errors/403.html
а переадресация на другой URL (такая переадресация поддерживается, но по мнению авторов, является признаком дурного тона) – с помощью директивы:
ErrorDocument 404 http://www.gogle.com
Блок директив:
<IfModule mod_setenvif.c> BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0 BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0 BrowserMatch "JDK/1\.0" force-response-1.0
BrowserMatch "Microsoft Data Access Internet Publishing Provider" redi- rect-carefully
BrowserMatch "^WebDrive" redirect-carefully
</IfModule>
используется для более адекватного отображения содержимого обслуживаемых Web-сервером ресурсов в различных браузерах путем изменения соответствующих переменных окружения.
Вразделе Section 3: Virtual Hosts определяются виртуальные сервера, обслуживаемые основным сервером.
Врассматриваемом примере виртуальный север eshop.bruy.info определен с помощью дирек-
тив:
### Виртуальный хост, например, с витриной магазина
### с доступом по протоколу http
#
NameVirtualHost eshop.bruy.info:80
<VirtualHost eshop.bruy.info:80> ServerAdmin sales@test.bruy.info ServerName eshop.bruy.info DocumentRoot "/var/www/eshop/html/"
#Каталог для html-документов
<Directory "/var/www/eshop/html/"> Options None
AllowOverride None Order allow,deny Allow from all
</Directory>
#Каталог с ограниченным доступом.
#Вряд ли имеет смысл создавать его на этом
#виртуальном хосте так логины и пароли передаются
#по сети в формате обычного текста.
#Каталог с ограниченным доступом лучше создать на
#виртуальном хосте с поддержкой протокола SSL.
<Directory "/var/www/eshop/html/private/"> Options None
AllowOverride AuthConfig AuthName "Restricted Section" AuthType Basic
AuthDBMType GDBM
AuthDBMUserFile /etc/httpd/conf/dbmpasswd Require valid-user
</Directory>
508 Часть 10. Программное обеспечение для организации службы HTTP-сервера
#Каталог для сценариев
ScriptAlias /cgi-bin/ "/var/www/eshop/cgi-bin/" <Directory "/var/www/eshop/cgi-bin/">
Options None AllowOverride None Order allow,deny Allow from all
</Directory>
ErrorLog /var/log/httpd/error_eshop_log
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" TransferLog /var/log/httpd/access_eshop_log
</VirtualHost>
Многие из этих директив уже использовались нами при конфигурировании основного сервера. Кроме того, следует отметить, что виртуальный сервер наследует непереопределенные настройки основного.
Директива:
NameVirtualHost eshop.bruy.info:80
предписывает прослушивать подключения на 80 порту – используемого по умолчанию – для соединений по протоколу HTTP.
ЗАМЕЧАНИЕ для нормальной работы виртуального сервера необходимо внести соответствующие коррективы в файлы зон DNS-сервера.
Директивы:
<VirtualHost eshop.bruy.info:80>
и
</VirtualHost>
ограничивают область описания виртуального сервера. Блок директив:
#Каталог для html-документов
<Directory "/var/www/eshop/html/"> Options None
AllowOverride None Order allow,deny Allow from all
</Directory>
определяет путь к корневому каталогу виртуального сервера eshop.bruy.info:80. Блок директив:
<Directory "/var/www/eshop/html/private/"> Options None
AllowOverride AuthConfig AuthName "Restricted Section" AuthType Basic
AuthDBMType GDBM
AuthDBMUserFile /etc/httpd/conf/dbmpasswd Require valid-user
</Directory>
определяет каталог /var/www/eshop/html/private/, доступ в который осуществляется после удачной аутентификации пользователя. Аутентификационную информацию о пользователях (логин и пароль) для повышения производительности лучше хранить в специально созданной базе данных.
Директива:
AllowOverride AuthConfig
разрешает использование директив авторизации пользователей при доступе к каталогу. Директива:
AuthName "Restricted Section"
определяет строковое сообщение, отправляемое клиентской программе при обращении к каталогу перед аутентификацией пользователя. Здесь вы можете ввести строку любого содержания, подсказывающую пользователю, для доступа к какому именно ресурсу он должен ввести аутентификационную информацию.
Директива:
AuthType Basic
определяет тип используемой аутентификации.
Глава 34. Apache HTTP Server |
509 |
Директива:
AuthDBMType GDBM
определяет тип базы данных, где хранится аутентификационная информация о пользователях. Директива:
AuthDBMUserFile /etc/httpd/conf/dbmpasswd
определяет путь к файлу, в котором хранится аутентификационная информация о пользователях. Директива:
Require valid-user
разрешает доступ к каталогу пользователей, удачно прошедших аутентификацию.
ЗАМЕЧАНИЕ Если вы не собираетесь использовать каталоги с ограниченным доступом, закомментируйте или удалите настройки доступа к каталогу из разделов, конфигурирующих виртуальные сервера, а также строку:
LoadModule auth_dbm_module modules/mod_auth_dbm.so из раздела Section 1: Global Environment.
Блок директив:
#Каталог для сценариев
ScriptAlias /cgi-bin/ "/var/www/eshop/cgi-bin/" <Directory "/var/www/eshop/cgi-bin/">
Options None AllowOverride None Order allow,deny Allow from all
</Directory>
определяет путь к каталогу для файлов сценариев виртуального сервера eshop.bruy.info:80.
Настройки, касающиеся поддержки протокола SSL, содержатся в блоке, ограниченном директивами:
<IfModule mod_ssl.c>
и
</IfModule>
Общие для основного сервера и виртуальных серверов настройки определяются следующими директивами:
AddType application/x-x509-ca-cert |
.crt |
|
AddType application/x-pkcs7-crl |
.crl |
|
SSLPassPhraseDialog |
builtin |
|
SSLSessionCache |
none |
|
SSLSessionCacheTimeout |
300 |
|
SSLMutex |
sem |
|
SSLRandomSeed startup |
file:/dev/urandom 1024 |
|
SSLRandomSeed connect |
file:/dev/urandom 1024 |
|
В рассматриваемом примере виртуальный север eshop.bruy.info с поддержкой протокола SSL определен с помощью директив:
## SSL Virtual Host Context
#
###Виртуальный хост, например,
###с информацией для зарегистрированных клиентов
###с доступом по протоколу https
NameVirtualHost eshop.bruy.info:443
<VirtualHost eshop.bruy.info:443> ServerAdmin sales@test.bruy.info ServerName eshop.bruy.info DocumentRoot "/var/www/eshopssl/html"
#Каталог для html-документов
<Directory "/var/www/eshopssl/html/"> Options Indexes
AllowOverride None Order allow,deny Allow from all
</Directory>
#Каталог с ограниченным доступом
<Directory "/var/www/eshopssl/html/private/"> Options None
510 Часть 10. Программное обеспечение для организации службы HTTP-сервера
AllowOverride AuthConfig AuthName "Restricted Section" AuthType Basic
AuthDBMType GDBM
AuthDBMUserFile /etc/httpd/conf/dbmpasswd Require valid-user
</Directory>
#Каталог для сценариев
ScriptAlias /cgi-bin/ "/var/www/eshopssl/cgi-bin/" <Directory "/var/www/eshopssl/cgi-bin/">
Options None AllowOverride None Order allow,deny Allow from all
</Directory>
ErrorLog /var/log/httpd/error_eshopssl_log
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" TransferLog /var/log/httpd/access_eshopssl_log
SSLEngine on
SSLCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL SSLCertificateFile /usr/share/ssl/certs/www.crt SSLCertificateKeyFile /usr/share/ssl/private/www.key SSLVerifyClient none
SSLVerifyDepth 10
SetEnvIf User-Agent ".*MSIE.*" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0
CustomLog /var/log/httpd/ssl_request_log \
"%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>
Многие из этих директив использовались ранее при конфигурировании виртуального сервера без поддержки протокола SSL, поэтому их назначение при конфигурировании виртуального сервера с поддержкой SSL не поясняются.
С помощью директив:
NameVirtualHost eshop.bruy.info:443
и
<VirtualHost eshop.bruy.info:443>
виртуальному серверу предписывается ожидать соединений на 443 порту, используемого по умолчанию для протокола HTPPS.
ЗАМЕЧАНИЕ Для нормальной работы виртуального сервера необходимо внести соответствующие коррективы в файлы зон DNS-сервера.
Директивы:
SSLCertificateFile /usr/share/ssl/certs/www.crt
и
SSLCertificateKeyFile /usr/share/ssl/private/www.key
определяют пути к файлам, содержащих сертификат и закрытый ключ.
ЗАМЕЧАНИЕ Если вы не собираетесь использовать каталоги с ограниченным доступом, закомментируйте или удалите настройки доступа к каталогу из разделов, конфигурирующих виртуальные сервера, а также строку:
LoadModule auth_dbm_module modules/mod_auth_dbm.so из раздела Section 1: Global Environment.
