Как настроить виртуальный хостинг

Обсудить

Завоевав невероятную популярность еще в 1996 году, веб-сервер Apache и по сей день является одним из самых распространенных решений для хостинга. По данным британского аналитического агентства Netcraft, его доля на рынке в 2015 году составила почти 51%, что, по сути, является абсолютной монополией. Столь оглушительный успех объясняется целым рядом факторов, но главный из них - гибкость. Сервер поддерживает подключение внешних модулей, работу с различными интерпретаторами языков программирования и базами данных, что делает его поистине универсальным и позволяет работать с любыми типами веб-приложений.

HTTPS-сервер Apache является частью связки веб-серверов (вместе с Nginx), которая используется в качестве основы ПО на хостинге Timeweb. Сегодня наша задача – разобраться с настройками Apache и установкой виртуального хостинга.

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

Установка и настройка виртуального хостинга позволит Вам:

  • обеспечить работу на VDS нескольких сайтов;
  • разграничить доступ к администрированию данных отдельных сайтов, размещенных на виртуальном хостинге;
  • работать с базовой частью - virtual host – для каждого сайта.

Файл .htaccess

Главным инструментом в работе с настройками виртуального хостинга является файл .htaccess – в отличие от httpd.conf файл работает для каталога, в котором расположен, и подкаталогов, тогда как второй отвечает за настройки конфигурации в целом, для всего массива сайтов под эгидой Apache, расположенных на виртуальном хостинге.

Управление конфигурацией осуществляется посредством директив – языка, на котором, собственно, и работает веб-сервер Apache: директивы прописываются в текстовых файлах (уже упомянутых httpd.conf и .htaccess).

Полный перечень директив может достигать сотен и тысяч пунктов – смысла даже просто перечислять их нет. Куда важнее сосредоточиться на более актуальных, доступных для редактирования директивах. Нас будут интересовать следующие файлы:

  • httpd.conf
  • .htaccess
  • srm.conf

Отметим, что в текстовых файлах с директивами довольно много «лишней» для пользователя информации. В основном это комментарии-разъяснения, которые не несут никакой функциональной нагрузки. То есть просто информация, описание того, за что отвечает та или иная директива. Если установка и настройка виртуального хостинга для Вас – дело новое, их можно удалить, предварительно сохранив копию конфигурационного файла для изучения. Нефункциональные пояснительные строки обозначены в документе знаком решетки: #.

Файл httpd.conf

Установка виртуального хостинга завершается этапом внесения изменений в httpd.conf и проверки работоспособности сервера после их сохранения.

Самыми важными директивами, на которые нужно обратить внимание в этом конфигурационном файле, являются:

  • ServerName – отвечает за то, какое имя будет присвоено основному серверу;
  • ServerAlias;
  • NameVirtualHost;
  • VirtualHost.

Управление этими директивами позволяет создавать любое количество виртуальных серверов – ограниченное лишь доступными мощностями физического сервера и условиями, зафиксированными в тарифном плане хостинг-оператора.

Отметим, что директивы (команды) ServerName не нужно путать с NameVirtualHost. Последние отвечают за имена как раз виртуальных серверов.

И ещё об именах и о преобразовании численных адресов (IP) в имена доменные. В файле httpd.conf можно найти директиву HostnameLookups. Значения on и off, соответственно, позволяют преобразовать численные IP-адреса в доменные имена. Хотя теоретически значение on должно увеличить нагрузку на мощности сервера, этого обычно не происходит.

Файл srm.conf

Файл srm.conf включает директивы, которые позволяют управлять структурой каталогов, расположенных на сервере. Главными среди них являются DocumentRoot и UserDir, а также DirectoryIndex.

В первой директиве указывается путь к каталогу, во второй – путь, по которому пользователь (владелец сайта) размещает нужные файлы, третья – включает список файлов индекса.

Из чуть менее важных директив отметим ErrorDocument. Если исполнение директивы оставить по умолчанию, то ошибка на странице или её временная недоступность будет иметь для пользователя в браузере крайне неприглядный вид. Изменение директивы с целью вывода формы поиска или альтернативного пути по серверу считается своеобразным правилом этикета для администратора сайта.

Настройки .htaccess

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

Базовые приемы

Теперь расскажем о базовых приемах, которые следует взять на вооружение любому владельцу собственного интернет-ресурса.

Задаем индексный файл

Индексный файл - это веб-документ на языке html, php или другом, который загружается в тот момент, когда посетитель обращается к какому-либо каталогу сайта напрямую. По умолчанию, он носит название index с приписанным на конце расширением.

Когда пользователь переходит по ссылке site-name.ru, он попадает в корневой каталог проекта. При этом происходит загрузка индексного файла, представляющего собой главную страницу сайта. В том случае, если таковой отсутствует в директории, веб-сервер Apache возвращает ошибку 403 (Forbidden, отказано в доступе).

Какой именно файл считать индексным, определяет директива DirectoryIndex. В большинстве случаев, в ней перечислены следующие варианты: index.php, index.html и index.htm. Но что делать, если Вы используете CMS, написанную, к примеру, на Python? Тогда можно указать индексный файл самостоятельно, добавив в .htaccess всего одну строчку. Для index.py она будет выглядеть следующим образом:

DirectoryIndex index.py

При необходимости можно задать сразу несколько индексных файлов, перечислив их через запятую. Apache будет последовательно проверять их наличие в папке и выводить первый найденный:

DirectoryIndex index.py, index.php, index.html

Устанавливаем страницы ошибок

.htaccess позволяет задавать собственные страницы ошибок в виде статичных документов. Эта опция весьма полезна, так как позволяет скрыть от злоумышленников версию CMS (в том случае, если страница генерируется на уровне движка) или сервера. Для этого можно воспользоваться следующим шаблоном:

ErrorDocument код_ошибки /каталог/страница_ошибки.html

Так, для самой известной ошибки “404 страница не найдена” директива будет такой:

ErrorDocument 404 /errors/404.html

Управляем кодировкой

Довольно часто при работе с CMS можно столкнуться с проблемой отображения текстовой информации. Как правило, это происходит из-за ошибок в кодировке. .htaccess позволяет принудительно переопределить ее значение:

AddType "text/html; charset=utf-8" .html .htm

В примере выше мы дали понять Apache, что все документы с расширением .html и .htm необходимо отдавать в кодировке UTF-8.

Боремся с воровством

Любая информация, размещенная на Вашем сайте, может быть “позаимствована” посетителями, а также нечистыми на руку веб-мастерами. Это не так уж и страшно, ведь современные поисковики неплохо определяют первоисточник. Проблемы могут возникнуть при использовании хотлинка.

Данный термин обозначает не просто копирование контента, а его “встраивание” в код другого веб-ресурса. Таким образом воруют различные изображения. При этом каждый раз, когда посетитель заходит на страницу, где размещен хотлинк, картинка подгружается с Вашего сайта, создавая дополнительную нагрузку и расходуя трафик. Однако, внеся изменения в настройки сервера Apache с помощью htaccess, это легко предотвратить. Метод основан на проверке переменной HTTP_REFERER. В случае выявления ее подмены, вместо запрашиваемого изображения будет выводиться любое другое, например, Ваш логотип:

<IfModule mod_rewrite.c>

Включаем проверку HTTP_REFERER

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(.+\.)?site-name\.ru/ [NC]

Меняем запрошенный файл на картинку с логотипом Вашего проекта:

RewriteCond %{REQUEST_URI} !logo.jpg$ [NC]
RewriteRule .(jpg|jpeg|gif|bmp|png)$ http://site-name.ru/logo.jpg [L]
</IfModule>

Другая напасть - отображение информации с Вашей площадки на другом сайте посредством тега <iframe>. С его помощью можно воровать даже видео, поэтому такую возможность обязательно следует заблокировать:

<IfModule mod_headers.c>
Header always append X-Frame-Options SAMEORIGIN
</IfModule>

Здесь мы прописали запрет в заголовок, отдаваемый сервером. SAMEORIGIN означает, что использование <iframe> возможно только в пределах оригинального ресурса.

Оптимизируем работу сайта

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

Для начала стоит разобраться с мультимедийными файлами и документами, которые практически никогда не меняются:

<ifModule mod_headers.c>

Перечисляем расширения файлов, которые хотели бы закэшироовать

<FilesMatch ".(gif|jpg|jpeg|png|ico|swf|flv|pdf|doc|docx|odf)$">

Устанавливаем время хранения кэша полгода (в секундах)

Header set Cache-Control "max-age=14515200, private"
</FilesMatch>
</IfModule>

Кэшировать таблицы стилей и JavaScript следует на менее продолжительное время:

<ifModule mod_headers.c>
<FilesMatch ".(js|css)$">

Время жизни кэша составляет 1 день (также в секундах)

Header set Cache-Control "max-age=86400, private"
</FilesMatch>
</IfModule>

Динамические скрипты лучше вообще исключить из кэша во избежание ошибок при обновлении страниц:

<ifModule mod_headers.c>
<FilesMatch ".(php|cgi|scgi|fcgi)$">
Header unset Cache-Control
</FilesMatch>
</IfModule>

Комментарии