Similar presentations:
Администрирование Операционных систем. Apache HTTPD
1. Администрирование Операционных систем Apache HTTPD
АДМИНИСТРИРОВАНИЕ ОПЕРАЦИОННЫХ СИСТЕМAPACHE HTTPD
Установка: {yum | apt-get | dnf} install {httpd | apache2}
Команды: service {httpd | apache2} {status | start | stop | restart | reload}
Конфигурация:
/etc/httpd/conf/httpd.conf
/etc/httpd/conf.d/
/etc/httpd/conf.modules.d/
Журналы: /var/log/httpd
access_log
error_log
request_log | transfer_log | custom_log | ssl_*
2. Администрирование Операционных систем HTTPD.conf
АДМИНИСТРИРОВАНИЕ ОПЕРАЦИОННЫХ СИСТЕМHTTPD.CONF
ServerRoot "/etc/httpd"
KeepAlive on #off
DocumentRoot "/var/www/html"
KeepAliveTimeout 30
DefaultRuntimeDir "/tmp"
MaxClients 3
ServerAdmin [email protected]
LogLevel warn #debug, info, notice, error, crit, alert, emerg
ServerName www.donnu.ru:80
AccessLog "logs/access_log"
HostnameLookups off #on
ErrorLog "logs/error_log"
Listen 80 #193.108.39.201:80
TransferLog "logs/transfer_log"
#Port 80
User apache
Group apache
3. Администрирование Операционных систем HTTPD.conf
АДМИНИСТРИРОВАНИЕ ОПЕРАЦИОННЫХ СИСТЕМHTTPD.CONF
LoadModule proxy_module modules/mod_proxy.so
Include <file> #допустимо «*»
IncludeOptional <file> #отсутствует
Redirect [ type | code ] / http://site1.com #регистр
#type: permanent, temp*, seeother, gone
EnableMMAP Off #On
EnableSendfile On #Off
RedirectMatch (.*)\.gif$
http://www.anotherserver.com$1.jpg
AddType <mime> <type>
DirectoryIndex <file>
Alias /url /path
AliasMatch (?i)^/image(.*) /ftp/pub/image$1
ScriptAlias /cgi-bin/ /web/cgi-bin/ #регистр
ScriptAliasMatch ^/cgi-bin(.*) /usr/local/apache/cgi-bin$1
AddDefaultCharset UTF-8
ErrorDocument <code> <text | url | page>
4. Администрирование Операционных систем HTTPD.conf
АДМИНИСТРИРОВАНИЕ ОПЕРАЦИОННЫХ СИСТЕМHTTPD.CONF
<Directory "<path>">
Options
AllowOverride
Require
Order Deny,Allow
Allow from <ip>[/subnet]
Deny from <ip>[/subnet]
</Directory>
Options
All
None
Indexes
Includes
FollowSymLinks
SymLinksifOwnerMatch
ExecCGI
MultiViews *
Модификаторы: + - =
<Location "/<url>"></Location>
<Files "<title.type>"></Files>
<Files ~ "\.(gif|jpe?g|png)$"></Files>
<FilesMatch "\.(gif|jpe?g|png)$"></FilesMatch>
<DirectoryMatch /><LocationMatch />
AllowOverride
All
None
Options
FileInfo
AuthConfig
Limit
Require
all { granted | denied }
user <usr1> ... <usrN>
group <gr1> ... <grN>
valid-user
method
5. Администрирование Операционных систем .htaccess
АДМИНИСТРИРОВАНИЕ ОПЕРАЦИОННЫХ СИСТЕМ.HTACCESS
<Directory>
AllowOverride FileInfo Options
Options -Indexes
</Directory>
/var/www/html/module/.htaccess
<Directory>
Options +Indexes
AddType text/html .z1 .z2
</Directory>
/var/www/html/module/submodule/.htaccess
<Directory>
DirectoryIndex myindex.z1
</Directory>
6. Администрирование Операционных систем аутентификация
АДМИНИСТРИРОВАНИЕ ОПЕРАЦИОННЫХ СИСТЕМАУТЕНТИФИКАЦИЯ
htpasswd -c /etc/httpd/users user1
htpasswd /etc/httpd/users user2
<Directory /var/www/html/authdir>
AuthType Basic
AuthName "Restricted Files"
echo -n > /etc/httpd/groups
mygroup1: bob joe anne
mygroup2: tom roy deni
customers: user1 user2
AuthBasicProvider file
AuthUserFile /etc/httpd/users
Require user user1 user2 #valid-user
Order allow,deny
Allow from internal.com
Satisfy any
#AuthGroupFile /etc/httpd/groups
#Require group customers
</Directory>
7. Администрирование Операционных систем виртуальные хосты
АДМИНИСТРИРОВАНИЕ ОПЕРАЦИОННЫХ СИСТЕМВИРТУАЛЬНЫЕ ХОСТЫ
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName donnu.ru
ServerAlias www.donnu.ru web.donnu.ru
DocumentRoot /var/www/donnu.ru/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
#NameVirtualHost *:80
#default-site => VirtualHost
8. Администрирование Операционных систем SSL
АДМИНИСТРИРОВАНИЕ ОПЕРАЦИОННЫХ СИСТЕМSSL
{ yum | dnf | apt-get } install openssl mod_ssl
Listen 443 https
mkdir /etc/httpd/ssl
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/localhost.crt
openssl req -new -x509 -days 30 \
-keyout server.key.orig -out server.pem
SSLCertificateKeyFile /etc/pki/tls/private/localhost.key
#SSLCertificateChainFile /etc/pki/tls/certs/localhost.pem
openssl rsa -in server.key.orig -out server.key
SSLPassPhraseDialog { builtin | /script [args] }
chown apache:apache *
SSLProtocol All -SSLv2
chmod 0600 /etc/httpd/ssl/server.key
#protocols: SSLv2 SSLv3 TLSv1 TLSv1.1 TLSv1.2 All
SSLRequireSSL
SSLVerifyDepth 10
9. Администрирование Операционных систем Apache HTTPD
АДМИНИСТРИРОВАНИЕ ОПЕРАЦИОННЫХ СИСТЕМAPACHE HTTPD
• LogFormat "template_data" template_name
• %T
—
время обработки запроса;
• CustomLog "logs/custom_log" template_name
• %u
—
пользователь;
• %r
—
первая строка запроса;
• %% — символ процента;
• %I
— объем входного потока (прописная i);
• %a
• %O
—
объем исходящего потока;
• %P
—
PID-процесса обработки;
—
IP-адрес клиента;
• %b — объем
заголовков);
запроса
(исключая
объем
• %f
—
запрошенный файл;
• %{VARNAME}e
окружения;
• %h
—
имя удаленной машины;
• %{VARNAME}C
—
содержимое кука;
• %H
—
используемый протокол;
—
содержимое
• %l
— уровень логирования (строчная L);
• %{VARNAME}i
запросе;
• %t
—
время запроса (формат %{format}t);
— содержимое
переменной
переменной
в
10. Администрирование Операционных систем Apache HTTPD
АДМИНИСТРИРОВАНИЕ ОПЕРАЦИОННЫХ СИСТЕМAPACHE HTTPD
Объявление:
httpd -DVar1 -DVar2
Define <var1> <value> #Define testvar /var/www/root
Использование:
var2 = ${var1} #ServerRoot = ${testvar}
<IfDefine Var1>
LoadModule proxy_module modules/mod_proxy.so #<title> <path>
Redirect / http://site1.com #<old_url> <new_url>, регистр(!), перезагрузка
</IfDefine>
<IfDefine !Var2>
...
</IfDefine>
11. Администрирование Операционных систем Apache HTTPD
АДМИНИСТРИРОВАНИЕ ОПЕРАЦИОННЫХ СИСТЕМAPACHE HTTPD
Задания:
1. Настроить базовый функционал демона HTTPD (порт 80, сайт по умолчанию), включая:
отработку ошибок 403 и 404;
создать каталог, в который может получить доступ только локальная машина;
запретить чтение файлов «.htaccess» для всех, а «.secure» для всех, кроме локальной сети;
разрешить указывать индексный файл каталога для всех подкаталогов, кроме корневого;
2. Настроить один виртуальный хост на порт 80 (http) и один виртуальны хост на порт 443 (https);
3. Настроить базовую аутентификацию для виртуального хоста http;
4. Установить поддержку SSL для виртуального хоста https;
Настроить логирование для виртуального хоста http: только время запроса и строку запроса.
Сайты должны быть на разных доменных именах, чтобы сервер мог их различать. Рекомендуется
использовать доменное имя site.host<NUM>.ln для сайта по умолчанию и vh.host<NUM>.ln для
виртуального. NUM - номер компьютера. Если DNS-сервер ранее в курсе не рассматривался,
необходимо эти используемые имена прописать в файле /etc/hosts