Начало работы — HTTP сервер Apache Версия 2.4
HTTP сервер Apache Версия 2.4
Available Languages: en | fr | ru
Если вы абсолютный новичок в работе с HTTP-сервером Apache или в запуске веб-сайтов вообще, вы можете не знать с чего начать или какие вопросы задавать. Этот документ познакомит вас с основами.
- Клиенты, серверы и URL-адреса
- Имена хостов и DNS
- Файлы конфигурации и директивы
- Контент веб-сайта
- Файлы журналов и устранение неполадок
- Что дальше?
См. также
- Comments
Адреса в Интернете записываются с помощью URL — Uniform Resource
Locator (унифицированный указатель ресурса), который указывает на
используемый протокол (например, http
), имя сервера
(например, www.apache.org
), URL-путь (например, /docs/current/getting-started.html
) и, возможно,
строку запроса (например, ?arg=value
), используемую для
передачи серверу дополнительных аргументов.
Клиент (например, веб-браузер) подключается к серверу (например, вашему HTTP-серверу Apache), используя определённый протокол, и отправляет запрос на ресурс, используя URL-путь.
URL-путь может обозначать множество вещей на сервере. Это может быть
файл (как getting-started.html
), обработчик
(как server-status) или файл какой-то
программы (как index.php
). Мы рассмотрим это подробней ниже,
в разделе Контент веб-сайта.
Сервер отправляет ответ, содержащий код состояния и, опционально, тело ответа. Код состояния указывает, был ли запрос успешно обработан, а если нет, то какая ошибка произошла. Это говорит клиенту, что он должен делать с ответом. Вы можете прочитать о возможных кодах ответа на Вики HTTP-сервера Apache.
Детали транзакции и условия возникновения ошибки записываются в файлы журналов. Это описывается более подробно ниже, в разделе Файлы журналов и устранение неполадок.
Для того чтобы соединиться с сервером, клиент сначала должен преобразовать имя сервера в IP-адрес — место в Интернете, где находится сервер. Таким образом, чтобы ваш веб-сервер был доступен, необходимо, чтобы имя сервера было в DNS.
Если вы не знаете как это сделать, вам нужно обратиться к сетевому администратору или поставщику услуг Интернета (провайдеру). Они могут сделать это для вас.
Несколько хостов могут указывать на один и тот же IP-адрес, а один физический сервер может иметь больше одного IP-адреса. Таким образом на одном физическом сервере вы можете запустить больше одного сайта с помощью особенности: виртуальные хосты.
Если вы тестируете сервер, не имеющий выхода в Интернет, можете поместить
имена хостов в файл hosts для того что бы имя разрешалось локально.
Например, вы можете добавить запись для отправки запросов к www.example.com
на локальный компьютер, для тестирования.
Эта запись будет выглядеть так:
127.0.0.1 www.example.com
Файл hosts, скорее всего, расположен в /etc/hosts
C:\Windows\system32\drivers\etc\hosts
.Вы можете узнать больше о файле hosts и больше о DNS.
HTTP-сервер Apache настроен с помощью простых текстовых файлов.
Эти файлы могут располагаться в разных местах, в зависимости от того как вы
установили сервер. Общие места расположения файлов можно найти в
Вики
HTTP-сервера Apache. Если вы установили httpd из исходного кода,
то расположение файлов конфигурации по умолчанию следующее: /usr/local/apache2/conf
.
По умолчанию файл конфигурации называется
.
Это тоже может варьироваться в сторонних дистрибутивах сервера.
Конфигурация часто разбивается на несколько небольших файлов, для
удобства управления. Эти файлы загружаются через директиву Include
.
Имена или расположения этих файлов конфигурации
могут сильно отличаться от одной установки к другой.
Расположите и разделите эти файлы наиболее подходящим для вас образом. Если расположение файлов по умолчанию,
не имеет смысла для вас, не стесняйтесь изменить его.
Сервер настраивается путём размещения директив конфигурации в этих файлах конфигурации. Директива — это ключевое слово с одним или несколькими аргументами, устанавливающими её значение.
На вопрос: «Где я должен прописать эту директиву?» – обычно
отвечают, там где ты хочешь использовать её. Если это глобальная настройка,
она должна располагаться в конфигурационном файле вне разделов <Directory>
, <Location>
, <VirtualHost>
или других
разделов. Если настройка относится только к конкретному каталогу,
значит она должна быть внутри секции <Directory>
,
которая описывает этот каталог, и так далее.
Смотри документ Разделы конфигурации
с подробным описанием вышеуказанных разделов.
В дополнение к основному файлу конфигурации, некоторые директивы могут
располагаться в файлах
, расположенных в папках с
контентом. Файлы .htaccess
в первую очередь предназначены для
людей у которых нет доступа к главному конфигурационному файлу сервера.
Вы можете узнать больше о файлах . htaccess
в инструкции .htaccess
.
Содержимое сайта может принимать различные формы, но в широком смысле разделяется на статический и динамический контент.
Статический контент — это, например, HTML-файлы, файлы изображений,
CSS-файлы и другие файлы, которые просто лежат на диске.
Директива DocumentRoot
Обычно, когда запрашивается каталог, без указания имени файла, то будет
отдан документ с именем index.html
. Например, если для директивы DocumentRoot
установлено значение /var/www/html
и приходит запрос на адрес http://www.example.com/work/
,
то файл расположенный по пути /var/www/html/work/index.html
будет отдан клиенту.
Динамический контент — это всё что генерируется во время запроса и может изменяться от запроса к запросу. Существует множество способов создания динамического контента. Различные обработчики доступны для генерации содержимого. Могут быть написаны специальные CGI программы для генерации контента на сайте.
Для написания кода с разнообразным функционалом могут использоваться сторонние модули, такие как mod_php. Множество сторонних приложений, написанных на различных языках программирования, и утилит доступны для скачивания и установки на ваш HTTP-сервер Apache. Поддержка сторонних продуктов выходит за рамки этой документации. При необходимости вы должны самостоятельно найти их документацию или форумы поддержки, где вы сможете получить ответы на свои вопросы.
Для вас, как администратора HTTP-сервера Apache, самые ценные активы — это файлы журналов (лог-файлы), в частности, журнал ошибок. Исправление любой проблемы без журнала ошибок можно сравнить с вождением автомобиля с закрытыми глазами.
Расположение журнала ошибок задаётся директивой ErrorLog
,
которая может быть установлена глобально или для каждого виртуального хоста.
Записи в журнале ошибок расскажут вам, что и когда пошло не так.
Зачастую они также смогут подсказать, как что-то исправить.
Каждая запись в журнале ошибок содержит код ошибки,
по которому вы можете поискать в Интернете более подробное
описание того, как решить проблему.
Вы также можете настроить журнал ошибок так, чтобы в него записывался
идентификатор журнала, который можно сопоставить с записями в журнале
доступа — это поможет определить, какой запрос какую ошибку вызвал.
Больше о логирование вы можете узнать в документации о журналах.
Теперь, когда вы знакомы с основами, пора двигаться дальше.
Этот документ содержит только базовую информацию. Мы надеемся, что она поможет вам начать работу, но есть множество других вещей, о которых вам, возможно, нужно узнать.
- Загрузки
- Установка
- Настройка
- Старт
- Часто задаваемые вопросы
Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Libera.chat, or sent to our mailing lists.
Что такое Apache? Подробный обзор веб-сервера Apache
Глоссарий
Ноя 30, 2021
Elena B.
4хв. читання
Что такое Apache? Это программное обеспечение с открытым исходным кодом, веб-сервер, который обеспечивает работу около 33% сайтов по всему миру. Официальное название – Apache HTTP сервер, поддерживается и развивается компанией Apache Software Foundation.
Веб-сервер позволяет владельцам сайтов обслуживать их контент в интернете, о чём понятно с самого название «веб-сервер». Apache один из самых старых и надёжных серверов с первой версией выпуска более 20 лет назад в 1995 году.
Когда кто-либо хочет посетить сайт, он вводит доменное имя в адресную строку своего браузера.
В Hostinger в нашей инфраструктуре веб-хостинга используется Litespeed (англ.), другой популярный веб-сервер. Это альтернативное решение позволяет обрабатывать информацию даже быстрее, чем Apache или NGINX.
Оглавление
Что такое веб-сервер?
Обработка файлов, обработка баз данных, почты и веб-сервер использует различные виды серверного программного обеспечения. Каждое из этих приложений может иметь доступ к файлам, хранящимся на реальном сервере и использовать их в различных целях.
Работа веб-сервера – обслуживать сайт в интернете. Для этого он выполняет роль посредника между компьютером сервера и компьютером клиента. Он берёт контент с сервера на каждый запрос пользователя и доставляет его в сеть.
Самой большой задачей веб-сервера является одновременное обслуживание различных запросов от многих пользователей. Веб-сервер обрабатывает файлы написанные на разных языках программирования, таких как PHP, Python, Java и другие.
Он превращает их в статический файл HTML и отдаёт их на обслуживание в браузер пользователя. Когда вы слышите словосочетание веб-сервер, думайте о нём, как об инструменте для коммуникации между сервером и клиентом.
Как работает веб-сервер Apache?
Хоть Apache и называется веб-сервер, но в реальном положении вещей он является не сервером, а программой, которая запускается на сервере. Его задача установить соединение между сервером и браузером посетителей (Firefox, Google Chrome, Safari и др.) при доставке файлов туда и обратно между ними (клиент-серверная структура). Apache – это кроссплатформенное программное обеспечение, что значит оно хорошо работает как на Unix, так и на Windows серверах.
Когда посетитель хочет загрузить страницу вашего сайта, например, домашнюю страницу или страницу «О нас», его браузер отправляет запрос на ваш сервер и Apache возвращает ответ со всеми запрошенными файлами (текст, изображение и так далее). Сервер и клиент взаимодействуют по протоколу HTTP и Apache ответственен за гладкое и безопасное соединение между двумя машинами.
Apache хорошо и удобно настраиваемый поскольку имеет модульную структуру. Модули позволяют администраторам сервера включать или выключать дополнительную функциональность. У Apache есть модули безопасности, кэширования, редактирования URL, аутентификации посредством пароля и другие. Вы можете установить свою собственную конфигурацию через файл .htaccess, который является файлом настроек для Apache и поддерживается всеми тарифными планами Hostinger.
Знаете ли вы, что в Hostinger есть специальные предложения? Посетите нашу страницу купонов и сэкономьте до 75%! Не стоит забывать, что это предложение ограничено во времени!
Использовать купон
Apache и другие веб-сервера
Кроме Apache существует ещё довольно много веб-серверов. Каждое приложение веб-сервера создавалось для различных целей. Не смотря на то, что Apache является самый широко используемым, для него есть несколько альтернатив и конкурентов.
Apache или NGINX
Nginx произносится как Engine-X, это более новое веб-серверное программное обеспечение с первым релизом в 2004 году. Как на сегодня он добился большой популярности среди владельцев сайтов. Nginx был создан для решения так называемой проблемы c10k – проблемы 10 тысяч соединений, что означает, что веб-сервера, использующие потоки не могут обрабатывать запросы пользователей более, чем с 10 000 подключений одновременно.
- Так как Apache использует структуру основанную на потоках, владельцы сайтов с высоким трафиком могли столкнуться с проблемой производительности. Nginx один из веб-серверов, который был нацелен на решение проблемы c10k и возможно это одно из самых успешных решений.
- Nginx имеет событийно ориентированную архитектуру, которая не создаёт новый процесс для каждого запроса. Вместо этого он обрабатывает каждый входящий запрос в едином потоке. Этот главный процесс управляет несколькими рабочими процессами, которые выполняют непосредственную обработку запросов. Модель Nginx, основанная на событиях распространяет запросы пользователей среди рабочих процессов эффективным путём, что приводит к лучшей масштабируемости.
- Если вам нужно обслуживание сайта с высокой посещаемостью, то Nginx – отличный выбор, поскольку он может сделать это, затратив минимальные ресурсы. И не случайно он используется сайтами с большим количеством показов, такими как: Netflix, Hulu, Pinterest и Airbnb.
- Однако для мелких и средних игроков, Apache имеет несколько преимуществ в сравнении с Nginx, среди которых: более простая настройка, множество модулей и среда дружественная для начинающих.
Apache или Tomcat
Tomcat – это веб-сервер также разработанных Apache Software Foundation, поэтому его официальное название Apache Tomcat. Это тоже HTTP-сервер, однако он обрабатывает приложения Java вместо статических сайтов. Tomcat может запускать несколько Java спецификаций, таких как: Java Servlet, Java Server Pages (JSP), Java EL и WebSocket.
- Tomcat был разработан специально для приложений на Java, в то время как Apache позиционируется как HTTP-сервер. Вы можете использовать Apache совместно с другими языками программирования (PHP, Python, Perl и т. д.) с помощью специального модуля Apache (mod_php, mod_python, mod_perl и др.).
- Хотя вы и можете использовать сервер Tomcat для статических веб-страниц, но это будет менее эффективно, чем использование Apache. Например, Tomcat заранее загружает виртуальную машину Java и другие Java-библиотеки, которые могут быть ненужными для работы вашего сайта.
- Tomcat также хуже настраиваемых в сравнении с другими веб-серверами. Например, для запуска WordPress, лучшим выбором будет стандартный HTTP-сервер, такой как Apache или NGINX.
Apache: преимущества и недостатки
Веб-сервер Apache может быть прекрасным выбором для запуска вашего сайта на стабильной и универсальной платформе. Но у него есть и свои недостатки, на которые стоит обратить внимание.
Преимущества:
- Бесплатный даже для использования в коммерческих целях.
- Надёжный, стабильное программное обеспечение.
- Часто обновляемый, регулярные патчи безопасности.
- Гибкий благодаря своей модульной структуре.
- Легко настраиваемый, дружелюбный для начинающих.
- Кроссплатформенный (работает одинаково хорошо на Unix и на Windows серверах).
- Работает для сайтов на WordPress сразу после установки без дополнительных настроек.
- Большое сообщество и легко доступная поддержка в случае любой проблемы.
Недостатки:
- Проблемы производительности на сайтах с большим трафиком.
- Слишком много параметров конфигруации могут привести к уязвимостям в безопасности.
Что ещё почитать?
Хотите узнать больше об основах хостинга сайтов и разработке? Познакомьтесь с нашими руководствами:
- Что такое хостинг сайтов? Разъяснение для начинающих
- Знакомство с cPanel
- Что такое доменное имя? Разъяснение для начинающих
- Что такое WordPress? Обзор самой популярной CMS в мире
Итак, что такое Apache?
Apache один из наиболее популярных веб-серверов, который позволяет вам запускать безопасно сайт без излишней головной боли. Это наиболее частый выбор для сайтов небольших проектов и малого бизнеса.
Вы можете установить сайт WordPress на веб-сервере Apache без каких-либо настроек. Кроме того, Apache прекрасно работает со многими другими системами управления контентом (Joomla, Drupal и др.), фреймворками (Django, Laravel и др.) и языками программирования. Это делает его уверенным решением для всех типов хостинг-платформ, таких как VPS или общий хостинг.
Елена имеет профессиональное техническое образование в области информационных технологий и опыт программирования на разных языках под разные платформы и системы. Более 10 лет посвятила сфере веб, работая с разными CMS, такими как: Drupal, Joomla, Magento и конечно же наиболее популярной в наши дни системой управления контентом – WordPress. Её статьи всегда технически выверены и точны, будь то обзор для WordPress или инструкции по настройке вашего VPS сервера.
Більше статей від Elena B.
установка, настройка и способы защиты от атак
Веб-сервер Apache не нуждается в представлении. Это программное обеспечение с открытым исходным кодом, выпущенное фондом Apache, один из самых используемых веб-серверов в мире. Рассмотрим, как его установить и как настроить конфигурацию брандмауэра для разрешения HTTP- и HTTPS-трафика и виртуальные хосты в Ubuntu 18.04.
Этапы установки Apache
Установить веб-сервер Apache в Ubuntu 18.04 Bionic Beaver очень просто:
$ sudo apt-get update && apt-get install apache2
Сценарии установки Ubuntu позаботятся о запуске и включении apache2-сервиса при загрузке.
Настройка брандмауэра
Чтобы получить доступ к содержимому сервера на той же машине, где он работает, нужно запустить веб-браузер и ввести в адресную строку localhost
. Если всё настроено правильно, страница поприветствует словами: «It works!». http://local.server.ip
Если в системе включён брандмауэр (как и должно быть), то чтобы сделать контент доступным извне нашей машины, нужно разрешить входящий трафик через порт 80. Команда для запуска зависит от используемого менеджера брандмауэра. Например, при использовании ufw
(используется в Ubuntu по умолчанию) мы должны запустить:
$ sudo ufw allow http
Если вы используете firewalld
, можно запустить:
$ sudo firewall-cmd --permanent --add-service=http && firewall-cmd --reload
Обратите внимание, что приведённая выше команда будет по умолчанию действовать в зоне firewalld
. Если вы хотите работать с другой зоной, нужно указать её с помощью опции --zone
.
Настройка виртуального хоста
Веб-сервер Apache может запускать несколько веб-сайтов на одном компьютере. Каждый запущенный сайт («виртуальный хост» в терминологии Apache) должен иметь свою собственную конфигурацию. Виртуальный хост может быть IP или именем. В этом руководстве мы сосредоточимся на втором типе, так как он проще в настройке и не требует нескольких IP-адресов (виртуальные хосты на основе имён позволяют нескольким веб-сайтам использовать один и тот же IP-адрес).
Виртуальный хост по умолчанию
В Ubuntu виртуальный хост по умолчанию определён в каталоге /etc/apache2/sites-available
внутри файла 000-default.conf
. Рассмотрим его:
<VirtualHost *:443> [...] ServerAdmin webmaster@localhost DocumentRoot /var/www/html [...] ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined [...] </VirtualHost>
Директива <VirtualHost>
на первой строке применяется для группы параметров, используемых Apache для конкретного виртуального хоста. Первое, что вы увидите в ней, — инструкцию *:80
. Она указывает IP-адрес и порт, используемый виртуальным хостом.
Несколько сайтов могут быть определены в одном и том же файле или по отдельности. В обоих случаях первое определение считается значением по умолчанию, если ни один другой виртуальный хост не соответствует запросу клиента. Директива на строке 3 не является обязательной, она используется, чтобы указать контактный адрес. Обычно в качестве аргумента директивы предоставляют действительный адрес электронной почты, чтобы было проще связаться с администратором. DocumentRoot
в строке 4 является обязательным, это важно для конфигурации виртуального хоста. Аргумент этой инструкции должен иметь доступ к файловой системе. Указанный каталог будет считаться корневым каталогом виртуального хоста и не должен содержать завершающий символ «/». В этом случае корневая директория документа — /var/www/html
. Если мы посмотрим на её содержимое, то увидим, что она содержит страницу index.html
, которую вы до этого видели в качестве страницы приветствия сервера.
Последние две команды на строках 8–9, представленные в этом VirtualHost
, — ErrorLog
и CustomLog
. Используя первый, вы указываете файл, в который сервер будет записывать возникающие ошибки. Второй используется для регистрации запросов, отправленных на сервер в указанном формате.
Новый виртуальный хост
Вы видели, как определяется виртуальный хост по умолчанию. Теперь предположим, что вы хотите разместить другой веб-сайт с помощью вашего веб-сервера. Для этого вам нужно определить новый виртуальный хост.
Как сказано выше, файлы виртуальных хостов должны быть определены внутри каталога /etc/apache2/sites-available
(по крайней мере в дистрибутивах на основе Debian). Поэтому создадим этот файл там. Прежде чем сделать это, следует создать каталог, который будет использоваться как document root, а также создать базовую страницу, которая будет отображаться при открытии сайта:
$ sudo mkdir /var/www/example && echo "Welcome to example!" > /var/www/example/index.html
Теперь можно приступить к настройке виртуального хоста:
<VirtualHost *:80> DocumentRoot /var/www/example ServerName www.example.local </VirtualHost>
Это минимальная конфигурация, необходимая для его запуска. Здесь вы можете увидеть новую директиву ServerName
. Это то, что определяет ваш виртуальный хост. Сохраним этот файл как example.conf
. Чтобы активировать ваш виртуальный хост, используйте команду a2ensite
. Эта команда создаёт символическую ссылку файла в каталоге /etc/apache2/sites-enabled
:
$ sudo a2ensite example.conf
После этого следует перезагрузить конфигурацию сервера:
$ sudo systemctl reload apache2.service
Чтобы убедиться, что конфигурация работает, вы должны добавить запись в файл /etc/hosts
той машины, с которой вы пытаетесь связаться с сайтом.
$ sudo echo "192.168.122.241 www.example.local" >> /etc/hosts
Без этой строки (и без записи DNS) было бы невозможно связать адрес сервера с именем вашего виртуального хоста, а использование IP-сервера напрямую вместо этого «инициировало» бы виртуальный хост по умолчанию. С клиентского компьютера, если вы теперь перейдёте к www.example.local
, вы должны увидеть минимальную страницу, которую настроили выше.
Настройка SSL
SSL (Secure Sockets Layer) — это технология, которая позволяет нам шифровать данные, связанные с соединением между клиентом и сервером. При использовании SSL-сертификатов HTTPS (Hyper Text Transfer Protocol Secure) заменяет HTTP в URL-адресе. SSL-сертификаты выдаются центром сертификации и могут быть очень дорогими, однако есть два других способа получить сертификат: создать самозаверяющий сертификат или воспользоваться сервисом Let’s encrypt.
Создаём самоподписанный SSL-сертификат
Создание самозаверенного сертификата — несложная задача. Это может быть удобно, если вы просто хотите получить шифрование. Мы можем создать самозаверяющий сертификат с помощью утилиты OpenSSL:
$ sudo openssl req -x509 \ -days 365 \ -sha256 \ -newkey rsa:2048 \ -nodes \ -keyout example. key \ -out example-cert.pem
Посмотрим, что делает эта команда. Первая опция, -x509
определяет, что формируется сертификат стандарта X509.
С помощью -days
мы устанавливаем срок действия сертификата в днях. Следующая опция — -newkey
. С её помощью мы создаём новый ключ, в данном случае RSA-ключ размером 2048 бит. В тестовом примере нам не нужно шифровать файл закрытого ключа, поэтому используем -nodes
. Если эта опция не указана, файл, в котором хранится ключ, будет защищён паролем, который нужно будет предъявлять каждый раз при перезапуске веб-сервера.
С помощью -keyout
и -out
мы указываем файл для записи сгенерированного ключа и сертификата соответственно. При запуске команды нам будет предложено ответить на несколько вопросов, после чего будет сгенерирован ключ и сертификат. Скопируйте сгенерированный ключ и сертификат в каталоги /etc/ssl/private
и /etc/ssl/ssl-certs
соответственно:
$ sudo cp example-cert. pem /etc/ssl/certs
Сертификат является общедоступным, поэтому не требует специального разрешения. Теперь ключ:
$ sudo cp example.key /etc/ssl/private
Важно настроить права доступа к файлу ключа. Папка /etc/ssl/private
принадлежит root-пользователю и группе ssl-cert
, и у неё есть права доступа 710. Это означает, что владелец имеет на неё полные права, а владелец группы может только получить к ней доступ и перечислить её содержимое, но не может дать разрешение другим:
$ ls -ld /etc/ssl/private drwx--x--- 2 root ssl-cert 4096 Mar 16 11:57 /etc/ssl/private
Изменим права доступа к файлу ключа, предоставив владельцу права на чтение и запись, а группе — только для чтения:
$ sudo chown root:ssl-cert /etc/ssl/private/example.key $ sudo chmod 640 /etc/ssl/private/example.key
Теперь, чтобы использовать сертификат, нужно включить модуль SSL с помощью команды a2enmod
:
$ sudo a2enmod ssl
Почти всё готово. Теперь пришло время изменить наш виртуальный хост и настроить его следующим образом:
<VirtualHost *:443> DocumentRoot /var/www/example ServerName www.example.local # Enable ssl engine SSLEngine on SSLCertificate /etc/ssl/certs/example-cert.pem SSLCertificateKeyFile /etc/ssl/private/example.key </VirtualHost>
Порт 443 в строке 1 — это порт, используемый для HTTPS (вместо порта 80, используемого для HTTP).
Мы также добавили инструкцию SSLEngine
on в строке 6.
Наконец, в строках 8–9 мы определили пути для сертификата и файла ключей, используя инструкции SSLCertificateFile
и SSLCertificateKeyFile
.
Теперь следуйте инструкциям по открытию порты брандмауэра из начале статьи, но на этот раз чтобы разрешить HTTPS-службу:
$ sudo ufw allow https
Наконец, перезагрузите конфигурацию Apache:
$ sudo systemctl reload apache2
Готово. Теперь, если мы перейдём по адресу https://www.example.local, мы должны увидеть веб-сервер, предупреждающий нас о том, что используемый сертификат небезопасен. Это, однако, признак того, что наш сертификат работает, и трафик между клиентом и сервером будет зашифрован (вам необходимо добавить исключение для сертификата, чтобы использовать его).
Настройка Let’s encrypt
Альтернатива коммерческим и самозаверенным сертификатам — «Let’s encrypt». Это бесплатный, автоматизированный и открытый центр сертификации. Его цель — дать возможность автоматически получить сертификат, которому доверяет браузер, без какого-либо вмешательства человека. Для этого используется протокол ACME (certificate management agent), который запускается на сервере.
Чтобы получить сертификат, вы должны подтвердить, что у вас есть контроль над доменом, для которого вы хотите его использовать. Если у вас нет доступа к shell на сервере, нужно связаться с вашим поставщиком услуг, чтобы активировать сертификат от вашего имени, но, возможно, на панели конфигурации сервиса есть специальный раздел. Если же у вас есть доступ к shell, необходимо установить клиент certbotACME
.
Для установки Certbot на Ubuntu 18.04 достаточно запустить:
$ sudo apt-get update && apt-get install certbot python-certbot-apache
Пакет Certbot поставляется с модулем systemd timer
, который будет запускать Certbot два раза в день, чтобы поддерживать сертификат в актуальном состоянии. Получить сертификат довольно просто:
$ sudo certbot --apache -m -d
Очевидно, чтобы это работало, домен должен правильно указывать на ваш общедоступный IP-адрес. Certbot предложит вам несколько вопросов для настройки конфигурации, и, если всё пойдёт хорошо, сертификат и ключ будут сохранены в каталоге /etc/letsencrypt/live/
. Просто настройте файл виртуального хоста, чтобы указать на них, и всё готово.
Как обезопасить сервер Apache
Основные средства защиты
Установка Fail2ban на Ubuntu Server 18.
04 Если вы хотите обезопасить свой сервер Ubuntu, первое, что вы должны сделать, — это установить систему обнаружения вторжений Fail2ban.
Fail2ban отслеживает определённые файлы журналов (в /var/log
) на предмет неудачных попыток входа или автоматических атак на сервер. Когда обнаруживается попытка компрометации с IP-адреса, Fail2ban блокирует его, добавляя новую цепочку в iptables
и предотвращая доступ или дальнейшую атаку на сервер.
Fail2ban настолько легко установить и использовать, что его можно рассматривать как простое и универсальное решение для всех серверов Linux.
Установить его просто. Войдите в свой сервер Ubuntu и обновите его при необходимости. Обратите внимание, что если в этом процессе обновлено ядро, сервер нужно перезагрузить, поэтому выберите время, когда перезагрузка возможна. Чтобы обновить сервер, введите следующие команды:
sudo apt-get update sudo apt-get upgrade
После выполнения команд при необходимости перезагрузите сервер. Установить Fail2ban можно с помощью одной команды:
sudo apt-get install -y fail2ban
Проверьте установленную версию:
fail2ban-server --version
После этого Fail2ban готов к работе. Запустить и включить сервис можно так:
sudo systemctl start fail2ban sudo systemctl enable fail2ban
Настройка jail
Настроим его для попыток входа по SSH. В каталоге /etc/fail2ban
вы найдёте файл jail.conf
. Не редактируйте его. Вместо этого создайте новый файл jail.local
, который переопределит любые подобные настройки в jail.conf
. Новая конфигурация будет отслеживать /var/log/auth.log
, использовать фильтр sshd fail2ban
, устанавливать для порта SSH значение 22 и устанавливать максимальное количество попыток — 3. Для этого выполните команду:
sudo nano /etc/fail2ban/jail. local
В новый файл вставьте следующее содержимое:
[sshd] enabled = true port = 22 filter = sshd logpath = /var/log/auth.log maxretry = 3
Сохраните и закройте его. Перезапустите Fail2ban с помощью команды:
sudo systemctl restart fail2ban
На этом этапе, если кто-либо попытается войти на ваш сервер Ubuntu через SSH и эта попытка 3 раза завершится ошибкой, он не сможет больше войти, поскольку iptables заблокирует IP-адрес.
Тестирование и разблокирование
Вы можете проверить, работает ли jail, намеренно провалив три попытки входа на сервер через SSH. После третьей неудачной попытки соединение будет зависать. Нажмите Ctrl+C, чтобы выйти, а затем попытайтесь вернуться по SSH на сервер. Вы больше не сможете использовать SSH на этом сервере с того IP-адреса, который вы использовали. Затем вы можете разблокировать свой тестовый IP-адрес с помощью следующей команды:
sudo fail2ban-client set sshd unbanip ip_address
Где ip_address
— запрещённый IP-адрес. Теперь вы снова можете войти.
Модуль mod_evasive
Ещё одна отличная утилита для обнаружения и блокировки IP-адресов, которые используются при атаке типа «отказ в обслуживании». Модуль помещает подозрительные IP-адреса во временный чёрный список и сохраняет их там, если они продолжают подозрительно себя вести. Благодаря простоте настройки и эффективность он стал одним из любимых инструментов защиты систем Apache. Если вы хотите защитить свой сайт без затрат, можете также использовать его.
Установка mod_evasive в Ubuntu
Введите команду:
# apt-get update
Затем установите вспомогательную утилиту:
sudo apt-get install apache2-utils
Чтобы установить модуль mod_evasive в Ubuntu, введите следующее:
# apt-get install libapache2-mod-evasive
Настройка mod_evasive
Как и большинство программных пакетов Linux, mod_evasive
управляется файлом конфигурации. Откройте его в текстовом редакторе с помощью следующей команды:
sudo nano /etc/apache2/mods-enabled/evasive.conf
Найдите запись:
#DOSEmailNotify [email protected]
Знак #
помечает это как комментарий. Удалите его, затем замените [email protected]
своим адресом электронной почты. Используйте ту, которой вы постоянно пользуетесь — именно сюда будут отправляться оповещения.
Отредактируйте файл журнала, чтобы он выглядел следующим образом: Сохраните и выйдите, затем перезагрузите Apache:
sudo systemctl reload apache2
Тестирование mod_evasive
Пришло время проверить, правильно ли работает модуль.
Используйте скрипт test.pl
. Его сценарий расположен по этому адресу: /usr/share/doc/libapache2-mod-evasive/examples/test.pl
.
Для его запуска примените эту команду:
perl /usr/share/doc/libapache2-mod-evasive/examples/test. pl
Вывод должен выглядеть таким образом:
Параметры и настройки
DOSSystemCommand
Вы, возможно, заметили, что эта опция была помечена как комментарий и отключена. Она позволяет указать системную команду, которая будет выполняться при добавлении IP-адреса в чёрный список. Вы можете использовать её, чтобы запустить команду для добавления IP-адреса в брандмауэр или IP-фильтр.
DOSHashTableSize
Увеличьте значение для более загруженных веб-серверов. Опция выделяет пространство для выполнения операций поиска. Увеличение размера улучшает скорость за счёт памяти.
DOSPageCount
Количество запросов для отдельной страницы, после которого адрес помещается в чёрный список. В примере стоит 2, но это достаточно маленькое (и агрессивное) значение. Увеличьте его, чтобы уменьшить количество ложных срабатываний.
DOSSiteCount
Общее количество запросов на один и тот же сайт по одному и тому же IP-адресу. По умолчанию установлено значение 50. Вы можете увеличить его до 100, чтобы уменьшить количество ложных срабатываний.
DOSPageInterval
Количество секунд для DOSPageCount. По умолчанию значение равно 1 секунде. Это означает, что если вы не измените его, запрос 2 страниц за 1 секунду временно поместит IP-адрес в чёрный список.
DOSSiteInterval
Как и DOSPageInterval, он определяет количество секунд, которые отслеживает DOSSiteCount. По умолчанию это значение равно 1 секунде, то есть если один IP-адрес запрашивает 50 ресурсов на одном и том же веб-сайте за одну секунду, он будет временно помещён в чёрный список.
DOSBlockingPeriod
Время, в течение которого IP-адрес остаётся в чёрном списке. По умолчанию установлено 10 секунд, но вы можете изменить его на любое значение, которое вам нравится.
DOSLogDir
По умолчанию он настроен на запись журналов в /var/log/mod_evasive
. Эти журналы можно просмотреть позже, чтобы оценить поведение клиента.
Белые IP-адреса
Эта опция по умолчанию не включена в файл evasive.conf
.
Откройте файл для редактирования и добавьте следующую строку: DOSWhitelist ваш_IP_адрес
Подставьте IP-адрес, который хотите добавить в белый список. Нужно указывать только одну запись в строке. Обычно список используется для доверенных клиентов, которые обмениваются с вашим сайтом большим количеством данных. Этот инструмент хорош для обнаружения ботов и скриптов. Если есть боты или сценарии, которые вы хотите разрешить, можете внести их.
Обязательно сохраните файл и выйдите из него, а затем перезагрузите службу Apache перед тестированием любого из этих параметров.
DNS Injection
Спам из веб-форм не только распространён, но и является быстрым способом внести домен в чёрный список подобный Spamhaus. Чтобы предотвратить подобное, вам нужно добавить ещё один модуль в Apache. В терминале введите:
sudo apt-get -y install libapache2-mod-spamhaus
После завершения установки введите команду:
sudo touch /etc/spamhaus.wl
Далее откройте файл /etc/apache2/apache2.conf
(используя sudo
и ваш любимый текстовый редактор) и добавьте в конец вашего файла конфигурации блок:
<IfModule mod_spamhaus.c> MS_METHODS POST, PUT, OPTIONS, CONNECT MS_WhiteList /etc/spamhaus.wl MS_CacheSize 256 </IfModule>
Сохраните файл apache2.conf
и перезапустите Apache, чтобы новый модуль вступил в силу.
Slowloris
В Apache есть модуль для предотвращения подобных DOS-атак. Вот как это работает. Откройте окно терминала. Введите команду:
sudo apt-get -y install libapache2-mod-qos
После завершения установки проверьте конфигурацию в /etc/apache2/mods-available/qos. conf
, чтобы убедиться, что она идеально соответствует вашим потребностям. После настройки модуля (при необходимости) перезапустите Apache.
Дополнительные средства защиты
Скрыть версию сервера
Это одно из первых соображений, поскольку вы не хотите показывать, какую версию веб-сервера вы используете. Её разоблачение означает, что вы помогаете хакеру ускорить процесс разведки. Перейдите в папку:
$ Web_Server/conf
Измените httpd.conf
с помощью редактора. Добавьте следующую директиву и сохраните httpd.conf
:
ServerTokens Prod ServerSignature Off
Перезапустите Apache. ServerSignature
удалит информацию о версии со страницы. ServerTokens
изменит заголовок только на рабочий, т. е. Apache.
Защита от атаки Clickjacking
Атака данного типа позволяет злоумышленнику выполнить клик на сайте-жертве от имени легитимного посетителя. Чтобы обезопасить свой веб-сервер, вам нужно использовать заголовок «X-FRAME-OPTIONS»
Вы можете сделать это, отредактировав файл apache2.conf
.
sudo nano /etc/apache2/apache2.conf
Добавьте следующую строку внутри Directory /var/www/html/
: Header always append X-Frame-Options SAMEORIGIN
Сохраните файл и перезапустите Apache.
sudo /etc/init.d/apache2 restart
Теперь попробуйте открыть веб-браузер для доступа к веб-серверу. Проверьте заголовки ответа HTTP в firebug. Вы должны увидеть X-Frame-Options.
Защита от атаки XSS
XSS (англ. Cross-Site Scripting — «межсайтовый скриптинг») является одной из наиболее распространённых атак на уровне приложений. Вы можете защититься от неё, отредактировав файл конфигурации Apache.
sudo nano /etc/apache2/apache2.conf
Добавьте следующую строку внутри Directory /var/www/html/
: Header set X-XSS-Protection "1; mode=block"
Заключение
Мы рассмотрели установку и настройку, а также все наиболее важные способы защиты сервера Apache, и теперь вы можете полноценно приступить к изучению его работы на практике.
Вадим Сычёв
веб-серверов — Apache | Убунту
Apache — наиболее часто используемый веб-сервер в системах Linux. Веб-серверы используются для обслуживания веб-страниц, запрашиваемых клиентскими компьютерами. Клиенты обычно запрашивают и просматривают веб-страницы с помощью приложений веб-браузера, таких как Firefox, Opera, Chromium или Internet Explorer.
Пользователи вводят унифицированный указатель ресурсов (URL), чтобы указать на веб-сервер с помощью его полного доменного имени (FQDN) и пути к требуемому ресурсу. Например, чтобы просмотреть домашнюю страницу веб-сайта Ubuntu, пользователь введет только полное доменное имя:
www.ubuntu.com
Чтобы просмотреть подстраницу сообщества, пользователь должен ввести полное доменное имя, а затем путь:
www.ubuntu.com/community
Наиболее распространенным протоколом, используемым для передачи веб-страниц, является протокол передачи гипертекста (HTTP). Также поддерживаются такие протоколы, как протокол передачи гипертекста по протоколу защищенных сокетов (HTTPS) и протокол передачи файлов (FTP), протокол для загрузки и выгрузки файлов.
Веб-серверы Apacheчасто используются в сочетании с ядром базы данных MySQL, языком сценариев HyperText Preprocessor (PHP) и другими популярными языками сценариев, такими как Python и Perl. Эта конфигурация называется LAMP (Linux, Apache, MySQL и Perl/Python/PHP) и образует мощную и надежную платформу для разработки и развертывания веб-приложений.
Установка
Веб-сервер Apache2 доступен в Ubuntu Linux. Чтобы установить Apache2:
В командной строке терминала введите следующую команду:
sudo apt установить apache2
Конфигурация
Apache2 настраивается путем размещения директив в текстовых файлах конфигурации. Эти директивы разделены между следующими файлами и каталогами:
apache2.conf: основной файл конфигурации Apache2. Содержит настройки, которые глобальный для Apache2.
httpd.conf: исторически основной файл конфигурации Apache2, названный в честь демона httpd. В других дистрибутивах (или более старых версиях Ubuntu) этот файл может присутствовать. В Ubuntu все параметры конфигурации были перемещены в apache2.conf и указанные ниже каталоги, и этот файл больше не существует.
conf-available: этот каталог содержит доступные файлы конфигурации. Все файлы, которые были ранее в
/etc/apache2/conf.d
следует переместить в/etc/apache2/conf-available
.conf-enabled: содержит символических ссылок на файлы в
/etc/apache2/conf-available
. Когда файл конфигурации имеет символическую ссылку, он будет включен при следующем перезапуске apache2.envvars: файл, в котором установлены переменные среды Apache2 .
модов-доступно: этот каталог содержит файлы конфигурации для загрузки модулей и их настройки. Однако не все модули будут иметь определенные файлы конфигурации.
с поддержкой модов: содержит символических ссылок на файлы в
/etc/apache2/mods-available
. Когда файл конфигурации модуля имеет символическую ссылку, он будет включен при следующем перезапуске apache2.ports.conf: содержит директивы, определяющие, какие порты TCP прослушивает Apache2.
доступных сайтов: в этом каталоге есть файлы конфигурации для Apache2 виртуальных хостов . Виртуальные хосты позволяют настроить Apache2 для нескольких сайтов с отдельными конфигурациями.
сайтов с поддержкой: , например, с поддержкой модов,
с поддержкой сайтов
содержит символические ссылки на каталог/etc/apache2/sites-available
. Точно так же, когда файл конфигурации на сайтах доступен по символической ссылке, настроенный им сайт будет активен после перезапуска Apache2.magic: инструкции для определения типа MIME на основе первых нескольких байтов файла.
Кроме того, с помощью директивы Include можно добавить другие файлы конфигурации, а для включения многих файлов конфигурации можно использовать подстановочные знаки. Любая директива может быть помещена в любой из этих конфигурационных файлов. Изменения в основных файлах конфигурации распознаются Apache2 только при его запуске или перезапуске.
Сервер также читает файл, содержащий типы MIME-документов; имя файла задается Директива TypesConfig , обычно через /etc/apache2/mods-available/mime.conf
, которая также может включать дополнения и переопределения, и по умолчанию /etc/mime.types
.
Основные настройки
В этом разделе объясняются основные параметры конфигурации сервера Apache2. Дополнительные сведения см. в документации Apache2.
Apache2 поставляется с конфигурацией по умолчанию, удобной для виртуального хоста. То есть он настроен с одним виртуальным хостом по умолчанию (используя VirtualHost ), который можно изменить или использовать как есть, если у вас есть один сайт, или использовать в качестве шаблона для дополнительных виртуальных хостов, если у вас несколько сайтов. Если оставить его в покое, виртуальный хост по умолчанию будет служить вашим сайтом по умолчанию, или пользователи сайта увидят, не соответствует ли введенный ими URL-адрес директиве ServerName любого из ваших пользовательских сайтов. Чтобы изменить виртуальный хост по умолчанию, отредактируйте файл
/etc/apache2/sites-available/000-default.conf
.Примечание
Директивы, установленные для виртуального хоста, применяются только к этому конкретному виртуальному хосту. Если директива установлена для всего сервера и не определена в настройках виртуального хоста, используется настройка по умолчанию. Например, вы можете определить адрес электронной почты веб-мастера и не определять отдельные адреса электронной почты для каждого виртуального хоста.
Если вы хотите настроить новый виртуальный хост или сайт, скопируйте этот файл в тот же каталог с выбранным вами именем. Например:
sudo cp /etc/apache2/sites-available/000-default. conf /etc/apache2/sites-available/mynewsite.conf
Отредактируйте новый файл, чтобы настроить новый сайт, используя некоторые директивы, описанные ниже.
Директива ServerAdmin указывает адрес электронной почты, который будет объявлен для администратора сервера. Значение по умолчанию — webmaster@localhost. Это должно быть изменено на адрес электронной почты, который доставлен вам (если вы являетесь администратором сервера). Если на вашем веб-сайте возникла проблема, Apache2 отобразит сообщение об ошибке, содержащее этот адрес электронной почты, на который следует сообщить о проблеме. Найдите эту директиву в файле конфигурации вашего сайта в /etc/apache2/sites-available.
Директива Listen указывает порт и, возможно, IP-адрес, который Apache2 должен прослушивать. Если IP-адрес не указан, Apache2 будет прослушивать все IP-адреса, назначенные машине, на которой он работает. Значение по умолчанию для директивы Listen — 80. Измените это значение на 127.0.0.1:80, чтобы заставить Apache2 прослушивать только ваш петлевой интерфейс, чтобы он не был доступен в Интернете, на (например) 81, чтобы изменить порт, который он слушает или оставьте все как есть для нормальной работы. Эту директиву можно найти и изменить в отдельном файле,
/etc/apache2/ports.conf
Директива ServerName является необязательной и указывает, на какое полное доменное имя должен отвечать ваш сайт. Виртуальный хост по умолчанию не имеет указанной директивы ServerName, поэтому он будет отвечать на все запросы, которые не соответствуют директиве ServerName в другом виртуальном хосте. Если вы только что приобрели доменное имя
mynewsite.com
и хотите разместить его на своем сервере Ubuntu, значение директивы ServerName в файле конфигурации вашего виртуального хоста должно бытьmynewsite.com
. Добавьте эту директиву в новый файл виртуального хоста, который вы создали ранее (/etc/apache2/sites-available/mynewsite. conf
).Вы также можете захотеть, чтобы ваш сайт отвечал на
www.mynewsite.com
, так как многие пользователи посчитают префикс www подходящим. Используйте для этого директиву ServerAlias . Вы также можете использовать подстановочные знаки в директиве ServerAlias.Например, следующая конфигурация заставит ваш сайт отвечать на любой запрос домена, оканчивающийся на .mynewsite.com .
псевдоним сервера *.mynewsite.com
Директива DocumentRoot указывает, где Apache2 должен искать файлы, составляющие сайт. Значение по умолчанию — /var/www/html, как указано в
/etc/apache2/sites-available/000-default.conf
. При желании измените это значение в файле виртуального хоста вашего сайта и не забудьте создать этот каталог, если это необходимо!
Включить новый VirtualHost с помощью утилиты a2ensite и перезапустите Apache2:
sudo a2ensite мой сайт новостей sudo systemctl перезапустить apache2. service
Примечание
Обязательно замените mynewsite на более описательное имя виртуального хоста. Один из способов — назвать файл после директивы ServerName VirtualHost.
Аналогично используйте утилиту a2dissite для отключения сайтов. Это может быть полезно при устранении неполадок с конфигурацией нескольких виртуальных хостов:
sudo a2dissite мой новостной сайт sudo systemctl перезапустить apache2.service
Настройки по умолчанию
В этом разделе объясняется настройка параметров сервера Apache2 по умолчанию. Например, если вы добавите виртуальный хост, параметры, настроенные для виртуального хоста, будут иметь приоритет для этого виртуального хоста. Для директивы, не определенной в настройках виртуального хоста, используется значение по умолчанию.
DirectoryIndex — это страница по умолчанию, обслуживаемая сервером, когда пользователь запрашивает индекс каталога, указав косую черту (/) в конце имени каталога.
Например, когда пользователь запрашивает страницу
http://www.example.com/this_directory/
, он или она получит либо страницу DirectoryIndex, если она существует, либо сгенерированный сервером список каталогов, если он не существует, и Указан параметр «Индексы» или страница «Отказано в доступе», если ни один из них не соответствует действительности. Сервер попытается найти один из файлов, перечисленных в директиве DirectoryIndex, и вернет первый найденный. Если он не находит ни один из этих файлов и если Options Indexes 9Для этого каталога установлено значение 0028, сервер сгенерирует и вернет список в формате HTML подкаталогов и файлов в каталоге. Значение по умолчанию, найденное в/etc/apache2/mods-available/dir.conf
, — «index.html index.cgi index.pl index.php index.xhtml index.htm». Таким образом, если Apache2 найдет в запрошенном каталоге файл, соответствующий любому из этих имен, будет отображен первый.Директива ErrorDocument позволяет указать файл, который Apache2 будет использовать для определенных событий ошибок. Например, если пользователь запрашивает несуществующий ресурс, возникает ошибка 404. По умолчанию Apache2 просто возвращает код возврата HTTP 404. Читать
/etc/apache2/conf-available/localized-error-pages.conf
для получения подробных инструкций по использованию ErrorDocument, включая расположение файлов примеров.По умолчанию сервер записывает журнал передачи в файл
/var/log/apache2/access.log
. Вы можете изменить это для каждого сайта в файлах конфигурации вашего виртуального хоста с помощью директивы CustomLog или опустить его, чтобы принять значение по умолчанию, указанное в/etc/apache2/conf-available/other-vhosts-access-log. .конф
. Вы также можете указать файл, в который записываются ошибки, с помощью директивы ErrorLog , значение которой по умолчанию —/var/log/apache2/error.log
. Они хранятся отдельно от журналов передачи, чтобы помочь в устранении неполадок с вашим сервером Apache2. Вы также можете указать LogLevel (значение по умолчанию — «warn») и LogFormat (см./etc/apache2/apache2.conf
для значения по умолчанию).Некоторые параметры указываются для каждого каталога, а не для каждого сервера. Опции — одна из этих директив. Раздел каталога заключен в XML-подобные теги, например:
.<Каталог /var/www/html/mynewsite> ... Каталог>
Директива Options в разделе Directory принимает одно или несколько из следующих значений (среди прочих), разделенных пробелами:
ExecCGI — Разрешить выполнение сценариев CGI. CGI-скрипты не выполняются, если этот параметр не выбран.
Осторожно
Большинство файлов не должны выполняться как сценарии CGI. Это было бы очень опасно. CGI-скрипты должны храниться в каталоге, отдельном от вашего DocumentRoot и за его пределами, и только этот каталог должен иметь установленную опцию ExecCGI. Это значение по умолчанию, а расположение CGI-скриптов по умолчанию —
/usr/lib/cgi-bin
.Включает — Разрешить включение на стороне сервера. Серверные включения разрешают HTML-файлу включать другие файлы. См. документацию Apache SSI (сообщество Ubuntu) для получения дополнительной информации.
IncludesNOEXEC — разрешить включение на стороне сервера, но отключить команды #exec и #include в сценариях CGI.
Индексы — Показать отформатированный список содержимого каталога, если в запрошенном каталоге не существует DirectoryIndex (например, index.html).
Осторожно
Из соображений безопасности это обычно не следует устанавливать и, конечно же, не следует устанавливать в каталоге DocumentRoot. Включайте эту опцию осторожно для каждого каталога, только если вы уверены, что хотите, чтобы пользователи видели все содержимое каталога.
Multiview — поддержка многоэкранных режимов с согласованием содержимого; эта опция отключена по умолчанию из соображений безопасности. См. документацию Apache2 по этому параметру.
SymLinksIfOwnerMatch — Переходите по символическим ссылкам только в том случае, если у целевого файла или каталога тот же владелец, что и у ссылки.
Настройки apache2
В этом разделе объясняются некоторые основные параметры конфигурации демона apache2.
LockFile — Директива LockFile задает путь к файлу блокировки, используемому при компиляции сервера с использованием либо USE_FCNTL_SERIALIZED_ACCEPT, либо USE_FLOCK_SERIALIZED_ACCEPT. Он должен храниться на локальном диске. Следует оставить значение по умолчанию, если только каталог журналов не находится в общем ресурсе NFS. В этом случае значение по умолчанию следует изменить на местоположение на локальном диске и на каталог, доступный для чтения только пользователю root.
PidFile — Директива PidFile задает файл, в котором сервер записывает свой идентификатор процесса (pid). Этот файл должен быть доступен для чтения только пользователю root. В большинстве случаев следует оставить значение по умолчанию.
User — Директива User устанавливает идентификатор пользователя, используемый сервером для ответа на запросы. Этот параметр определяет доступ к серверу. Любые файлы, недоступные для этого пользователя, также будут недоступны для посетителей вашего сайта. Значением по умолчанию для пользователя является «www-data».
Предупреждение
Если вы точно не знаете, что делаете, не устанавливайте для директивы пользователя значение root. Использование root в качестве пользователя создаст большие дыры в безопасности вашего веб-сервера.
Group — Директива Group аналогична директиве User. Группа задает группу, под которой сервер будет отвечать на запросы. Группа по умолчанию также «www-data».
Модули Apache2
Apache2 — модульный сервер. Это означает, что в главный сервер включены только самые основные функции. Расширенные функции доступны через модули, которые можно загрузить в Apache2. По умолчанию базовый набор модулей включается в сервер во время компиляции. Если сервер скомпилирован для использования динамически загружаемых модулей, то модули можно скомпилировать отдельно и добавить в любой момент с помощью директивы LoadModule. В противном случае Apache2 необходимо перекомпилировать для добавления или удаления модулей.
Ubuntu компилирует Apache2 для динамической загрузки модулей. Директивы конфигурации могут быть условно включены при наличии определенного модуля путем включения их в блок
Вы можете установить дополнительные модули Apache2 и использовать их с вашим веб-сервером. Например, выполните следующую команду в терминале, чтобы установить модуль Python 3 WSGI:
sudo apt установить libapache2-mod-wsgi-py3
Установка автоматически включит модуль, но мы можем отключить его с помощью а2дисмод
:
судо a2dismod wsgi sudo systemctl перезапустить apache2. service
А затем используйте утилиту a2enmod
, чтобы повторно включить его:
судо a2enmod wsgi sudo systemctl перезапустить apache2.service
Дополнительные модули, уже доступные в вашей системе, см. в каталоге /etc/apache2/mods-available
.
Конфигурация HTTPS
Модуль mod_ssl
добавляет в сервер Apache2 важную функцию — возможность шифрования связи. Таким образом, когда ваш браузер обменивается данными с использованием SSL, 9Префикс 0053 https:// используется в начале унифицированного указателя ресурса (URL) на панели навигации браузера.
Модуль mod_ssl
доступен в пакете apache2-common. Выполните следующую команду в терминале, чтобы включить модуль mod_ssl
:
судо a2enmod ssl
Файл конфигурации HTTPS по умолчанию находится в /etc/apache2/sites-available/default-ssl.conf
. Чтобы Apache2 обеспечивал HTTPS, сертификат и файл ключа также необходимы. Конфигурация HTTPS по умолчанию будет использовать сертификат и ключ, сгенерированные пакетом ssl-cert
. Они хороши для тестирования, но автоматически сгенерированный сертификат и ключ следует заменить сертификатом, специфичным для сайта или сервера. Информацию о создании ключа и получении сертификата см. в разделе Сертификаты.
Чтобы настроить Apache2 для HTTPS, введите следующее:
sudo a2ensite по умолчанию-ssl
Примечание
Каталоги
/etc/ssl/certs
и/etc/ssl/private
являются местоположениями по умолчанию. Если вы устанавливаете сертификат и ключ в другой каталог, обязательно измените SSLCertificateFile и SSLCertificateKeyFile соответствующим образом.
Теперь, когда Apache2 настроен для HTTPS, перезапустите службу, чтобы включить новые настройки:
sudo systemctl перезапустить apache2.service
Примечание
В зависимости от того, как вы получили сертификат, вам может потребоваться ввести парольную фразу при запуске Apache2.
Вы можете получить доступ к защищенным страницам сервера, набрав https://your_hostname/url/
в адресной строке браузера.
Совместное использование Разрешение на запись
Чтобы несколько пользователей могли писать в один и тот же каталог, необходимо предоставить разрешение на запись группе, которую они совместно используют. В следующем примере разрешение на запись для общего доступа предоставляется /var/www/html
в группу «вебмастера».
sudo chgrp -R веб-мастера /var/www/html sudo chmod -R g=rwX /var/www/html/
Эти команды рекурсивно устанавливают групповое разрешение для всех файлов и каталогов в /var/www/html
, чтобы разрешить чтение, запись и поиск в каталогах. Многие администраторы находят это полезным для разрешения нескольким пользователям редактировать файлы в дереве каталогов.
Предупреждение
Демон
apache2
будет работать как 9Пользователь 0053 www-data , которому соответствует группаwww-data
. Этим не следует предоставлять доступ на запись к корневому каталогу документа, так как это будет означать, что уязвимости в Apache или приложениях, которые он обслуживает, позволят злоумышленникам перезаписать обслуживаемый контент.
Каталожные номера
Документация Apache2 содержит подробную информацию о директивах конфигурации Apache2. Кроме того, официальную документацию по Apache2 см. в пакете apache2-doc.
Поваренная книга Apache O’Reilly — хороший ресурс для выполнения определенных конфигураций Apache2.
Вопросы по Apache2, относящиеся к Ubuntu, задавайте на IRC-канале #ubuntu-server на libera.chat.
Что такое Apache? Подробный обзор веб-сервера Apache
ВПС
15 сентября 2022 г.
Ричард Б.
5 минут Чтение
Загрузить полную памятку по командам Linux
Apache — один из популярных веб-серверов для владельцев веб-сайтов, разработчиков и даже хостинг-провайдеров, занимающий 33% доли рынка среди всех веб-сайтов.
В Hostinger, например, наша инфраструктура хостинга работает на другом популярном веб-сервере Litespeed. Эта конкретная настройка значительно улучшает сильные стороны обоих серверов, позволяя нам обеспечивать оптимальную производительность для наших пользователей.
Узнайте больше, чтобы найти ответ на вопрос, что такое Apache, его сравнение с другими веб-серверами, такими как NGINX и Tomcat, а также его плюсы и минусы.
Что такое Apache?
Apache — это бесплатное программное обеспечение с открытым исходным кодом, которое позволяет пользователям размещать свои веб-сайты в Интернете. Это одно из старейших и наиболее надежных программ для веб-серверов, поддерживаемых Apache Software Foundation, первая версия которого была выпущена в 1995 году.
Что такое веб-сервер?Файловые серверы, серверы баз данных, почтовые серверы и веб-серверы используют различные типы серверного программного обеспечения. Каждое из этих приложений может получать доступ к файлам, хранящимся на физическом сервере, и использовать их для различных целей.
Работа веб-сервера заключается в обслуживании веб-сайтов в Интернете. Для достижения этой цели он действует как посредник между сервером и клиентскими машинами. Он извлекает контент с сервера по каждому запросу пользователя и доставляет его в Интернет.
Самой большой проблемой веб-сервера является одновременное обслуживание множества разных веб-пользователей, каждый из которых запрашивает разные страницы. Веб-серверы обрабатывают файлы, написанные на разных языках программирования, таких как PHP, Python, Java и других.
Они превращают их в статические файлы HTML и предоставляют эти файлы в браузере для веб-пользователей. Когда вы слышите слово «веб-сервер», думайте о нем как об инструменте, отвечающем за правильное взаимодействие между сервером и клиентом.
Как работает веб-сервер Apache?Хотя мы называем Apache веб-сервером, это не физический сервер, а скорее программа, работающая на HTTP-сервере. Его работа заключается в установлении соединения между сервером и браузерами посетителей веб-сайта (Firefox, Google Chrome, Safari и т. д.) при доставке файлов туда и обратно между ними (структура клиент-сервер). Программное обеспечение Apache также совместимо с любой операционной системой, от Windows до Unix.
Когда посетитель хочет загрузить страницу на вашем веб-сайте, например, домашнюю страницу или страницу «О нас», его браузер отправляет запрос на ваш сервер, и Apache возвращает ответ со всеми запрошенными файлами (текст, изображения , так далее.).
Сервер и клиент обмениваются данными по протоколу HTTP, а веб-сервер Apache отвечает за бесперебойную и безопасную связь между двумя машинами.
Apache обладает широкими возможностями настройки благодаря своей инфраструктуре с открытым исходным кодом. Благодаря этому веб-разработчики и пользователи могут адаптировать его исходный код в соответствии с типом создаваемого веб-сайта.
Кроме того, Apache предоставляет множество модулей, позволяющих администраторам серверов включать и выключать дополнительные функции. Веб-сервер Apache имеет модули для обеспечения безопасности, кэширования, перезаписи URL-адресов, аутентификации по паролю и других функций.
Чтобы настроить Apache, вам потребуется доступ к .htaccess. Этот файл конфигурации Apache поддерживается всеми планами веб-хостинга Hostinger.
HTTP-сервер Apache и другие веб-серверыПомимо веб-сервера Apache существует множество других популярных вариантов. Каждое приложение веб-сервера было создано для разных целей. Хотя веб-сервер Apache является наиболее широко используемым, у него есть довольно много альтернатив и конкурентов.
Apache против NGINXNginx (произносится как Engine-X) — это бесплатное программное обеспечение с открытым исходным кодом. По сравнению с Apache, это более новое приложение веб-сервера, выпущенное в 2004 году.
Nginx был создан для решения так называемой проблемы c10k, означающей, что веб-сервер, использующий потоки для обработки пользовательских запросов, не может управлять более чем 10 000 соединений. в то же время.
- Поскольку Apache использует структуру на основе потоков, владельцы веб-сайтов с высокой посещаемостью могут столкнуться с проблемами производительности. Nginx — один из веб-серверов, решающих проблему c10k, и, вероятно, самый успешный.
- Nginx имеет управляемую событиями архитектуру, которая не создает новый процесс для каждого запроса. Вместо этого он обрабатывает каждый входящий запрос в одном потоке. Этот главный процесс управляет несколькими рабочими процессами, выполняющими фактическую обработку запросов. Модель Nginx, основанная на событиях, эффективно распределяет пользовательские запросы между рабочими процессами, что обеспечивает гораздо лучшую масштабируемость.
- Если вам нужно управлять веб-сайтом с высокой посещаемостью, Nginx — отличный выбор, так как он может сделать это с минимальными ресурсами. Не может быть совпадением, что он используется многими популярными веб-сайтами, такими как Netflix, Hulu, Pinterest и Airbnb.
- Однако для малых и средних игроков Apache предлагает несколько преимуществ по сравнению с Nginx, таких как простая настройка, множество модулей и удобная среда для начинающих.
Заинтересованы в подробном сравнении?
Прочтите нашу статью о Nginx и Apache!
Apache против TomcatTomcat — популярный веб-сервер, также разработанный Apache Software Foundation, поэтому его официальное название — Apache Tomcat. Подобно Apache, Tomcat является HTTP-сервером. Однако его основная функциональность заключается в том, чтобы запускать приложения Java вместо статических веб-сайтов. Tomcat может выполнять несколько различных спецификаций Java, таких как Java Servlet, JavaServer Pages (JSP), Java EL и WebSocket.
- Tomcat был создан специально для обслуживания динамического веб-контента, работающего в приложениях Java, а Apache — это HTTP-сервер общего назначения. Вы можете использовать Apache вместе с разными языками программирования (PHP, Python, Perl и т. д.) с помощью соответствующих модулей Apache (mod_php, mod_python, mod_perl и т. д.).
- Хотя вы также можете использовать сервер Tomcat для обслуживания статических веб-страниц, он менее эффективен для этой цели по сравнению с сервером Apache. Например, Tomcat предварительно загружает виртуальную машину Java и другие библиотеки, связанные с Java, которые вам не понадобятся на большинстве веб-сайтов.
- Tomcat также менее настраиваемый по сравнению с другими веб-серверами. Например, для запуска WordPress лучше всего использовать HTTP-сервер общего назначения, такой как Apache или NGINX.
Веб-сервер Apache может стать отличным выбором для запуска вашего веб-сайта на стабильной и универсальной платформе. Тем не менее, он также имеет некоторые недостатки, на которые следует обратить внимание.
Pros :
- Открытый исходный код и бесплатно, даже для коммерческого использования.
- Надежное, стабильное программное обеспечение.
- Часто обновляемые исправления безопасности.
- Гибкость благодаря модульной структуре.
- Простота настройки, удобство для начинающих.
- Кроссплатформенный (работает как на серверах Unix, так и на Windows).
- Оптимальная доставляемость статических файлов и совместимость с любым языком программирования (PHP, Python и т. д.)
- Готово работает с сайтами WordPress.
- Огромное сообщество и легкодоступная поддержка в случае возникновения каких-либо проблем.
Минусы :
- Проблемы с производительностью на веб-сайтах с чрезвычайно интенсивным трафиком.
- Слишком большое количество параметров конфигурации может привести к уязвимостям в системе безопасности.
Хотите узнать больше об основах хостинга и разработки веб-сайтов? Ознакомьтесь с этими руководствами:
- Что такое веб-хостинг — полное руководство
- Знакомство с cPanel для начинающих
- Что такое доменное имя и как оно работает?
- Обзор WordPress — самой популярной CMS в мире
Apache, один из самых популярных веб-серверов, позволяет запускать безопасный веб-сайт без особых усилий. Он бесплатный и с открытым исходным кодом, что делает его частым выбором индивидуальных предпринимателей и малых предприятий, которые хотят присутствовать в Интернете.
Принцип работы HTTP-сервера Apache заключается в том, что он будет принимать запросы от веб-браузеров, таких как Google Chrome и Microsoft Edge, и превращать программные сценарии в веб-страницы, содержимое которых будет видно посетителям.
Вы можете установить веб-сайт WordPress на веб-сервер Apache без какой-либо настройки. Кроме того, сервер Apache без проблем работает со многими другими системами управления контентом (Joomla, Drupal и т. д.), веб-фреймворками (Django, Laravel и т. д.) и языками программирования. Это делает его хорошим выбором для всех типов платформ веб-хостинга, таких как VPS или виртуальный хостинг.
Надеюсь, эта статья содержит все ответы, которые вам нужно знать о том, что такое Apache. Оставляйте комментарии ниже, если у вас остались вопросы об этом веб-сервере!
Ричард — разработчик программного обеспечения для WordPress и эксперт по системам управления контентом. Когда он не играет с кодом, Ричард наслаждается хорошим кино и крафтовым пивом.
Подробнее от Ричарда Б.
Что такое Apache? Подробный обзор веб-сервера Apache
Что такое веб-сервер Apache?
HTTP-сервер Apache — это бесплатный веб-сервер с открытым исходным кодом, который доставляет веб-контент через Интернет. Его обычно называют Apache, и после разработки он быстро стал самым популярным HTTP-клиентом в Интернете. Широко распространено мнение, что Apache получил свое название от своей истории разработки и процесса улучшения с помощью примененных исправлений и модулей, но это было исправлено еще в 2000 году. Выяснилось, что название произошло от уважения индейского племени к его отказоустойчивости и долговечности.
Теперь, прежде чем мы углубимся в Apache, мы должны сначала рассмотреть, что такое веб-приложение, и стандартную архитектуру, обычно используемую в веб-приложениях.
Архитектура веб-приложений Apache
Apache — это всего лишь один компонент, необходимый в стеке веб-приложений для доставки веб-контента. Один из наиболее распространенных стеков веб-приложений включает LAMP или Linux, Apache, MySQL и PHP.
Linux — это операционная система, которая обрабатывает операции приложения. Apache — это веб-сервер, который обрабатывает запросы и обслуживает веб-активы и контент через HTTP. MySQL — это база данных, в которой хранится вся ваша информация в удобном для запросов формате. PHP — это язык программирования, который работает с Apache для создания динамического веб-контента.
Хотя фактические статистические данные могут различаться, справедливо будет сказать, что большая часть веб-приложений работает в той или иной форме стека LAMP, потому что его легко построить, а также бесплатно использовать. По большей части веб-приложения, как правило, имеют схожую архитектуру и структуру, даже если они выполняют множество различных функций и целей. Большинство веб-приложений также выигрывают от брандмауэров, балансировщиков нагрузки, веб-серверов, сетей доставки контента и серверов баз данных.
Брандмауэры помогают защитить веб-приложение как от внешних угроз, так и от внутренних уязвимостей в зависимости от того, где настроены брандмауэры. Балансировщики нагрузки помогают распределять трафик между веб-серверами, которые обрабатывают HTTP(S)-запросы (вот тут и появляется Apache), и серверами приложений (серверы, которые обрабатывают функциональность и рабочую нагрузку веб-приложения). У нас также есть серверы баз данных, которые обрабатывают хранение активов и резервное копирование. В зависимости от вашей инфраструктуры ваша база данных и приложение могут находиться на одном сервере, хотя рекомендуется хранить их отдельно.
Простой мониторинг и устранение неполадок веб-активности Apache
Получите лучшее представление об инфраструктуре системы, а также о взаимодействии ваших клиентов и заказчиков с вашим веб-сайтом и приложениями.
Начать бесплатную пробную версию
Ландшафт веб-сервера
Интернет состоит из множества различных технологий, и не все они одинаковы. Хотя Apache, возможно, является одним из самых популярных веб-серверов в сети, существует много других игроков, и ландшафт постоянно меняется. Еще в конце 90-х и начале 2000-х доминирование Apache было очень сильным, обслуживая более 50% активных веб-сайтов в Интернете. Microsoft IIS (Internet Information Services) также был вариантом, но не таким популярным.
Сегодня Apache по-прежнему обслуживает большую часть активных веб-сайтов, но их доля сократилась с 50% до чуть менее 40% по состоянию на 2018 год, а NGINX, относительно новый игрок на игровом поле веб-серверов, находится на втором месте. примерно 35%, а Microsoft IIS колеблется в районе 8-10%. Каждый год появляется новый урожай веб-приложений с новыми стеками и серверами, поэтому ландшафт постоянно меняется.
Почему веб-серверы Apache?
Apache считается программным обеспечением с открытым исходным кодом, что означает, что исходный код находится в свободном доступе для просмотра и совместной работы. Открытый исходный код сделал Apache очень популярным среди разработчиков, которые создали и настроили свои собственные модули для применения определенных функций и улучшения его основных функций. Apache существует с 1995 года и является основной технологией, которая помогла стимулировать первоначальный рост Интернета в его зачаточном состоянии.
Одним из преимуществ Apache является его способность обрабатывать большие объемы трафика при минимальной настройке. Он легко масштабируется, а благодаря его модульной функциональности вы можете настроить Apache так, чтобы он делал то, что вы хотите, и так, как вы этого хотите. Вы также можете удалить ненужные модули, чтобы сделать Apache более легким и эффективным.
Некоторые из наиболее популярных модулей, которые можно добавить, — это SSL, поддержка программирования на стороне сервера (PHP) и конфигурации балансировки нагрузки для обработки больших объемов трафика. Apache также можно развернуть в Linux, MacOS и Windows. Если вы научитесь настраивать Apache в Linux, вы сможете администрировать Apache в Windows и Mac. Единственная разница будет заключаться в путях к каталогам и процессах установки.
Особенности веб-сервера Apache
- Обработка статических файлов
- Загруженные динамические модули
- Автонексия
- .HTACCESS
- Совместима с IPv6
- О.С. , сценарии Lua
- Балансировка нагрузки
- Отслеживание сеансов
- Перезапись URL-адресов
- Геолокация на основе IP-адреса
Как работает веб-сервер Apache?
Apache функционирует как способ связи по сети от клиента к серверу с использованием протокола TCP/IP. Apache можно использовать для самых разных протоколов, но наиболее распространенным является HTTP/S. HTTP/S или протокол передачи гипертекста (S означает безопасный) — это один из основных протоколов в Интернете, наиболее известный протокол Apache.
HTTP/S используется для определения того, как сообщения форматируются и передаются через Интернет, с инструкциями для браузеров и серверов о том, как реагировать на различные запросы и команды. Безопасный протокол передачи гипертекста обычно проходит через порт 443, а незащищенный протокол — через порт 80.
Сервер Apache настраивается с помощью файлов конфигурации, в которых модули используются для управления его поведением. По умолчанию Apache прослушивает запрашиваемые IP-адреса, настроенные в его конфигурационных файлах. Именно здесь вступает в игру одна из многих сильных сторон Apache.
С помощью директивы Listen Apache может принимать и направлять определенный трафик на определенные порты и домены на основе определенных запросов комбинации адреса и порта. По умолчанию Listen работает на порту 80, но Apache может быть привязан к разным портам для разных доменов, что позволяет размещать множество разных веб-сайтов и доменов на одном сервере. Вы можете прослушивать domain1.com на порту 80, domain2.com на порту 8080 и domain3.com на порту 443, используя HTTPS, все на Apache.
Как только сообщение достигает пункта назначения или получателя, оно отправляет уведомление или сообщение ACK, фактически подтверждая исходному отправителю, что его данные успешно доставлены. Если произошла ошибка при получении данных или некоторые пакеты были потеряны при передаче, узел назначения или клиент отправляет сообщение Not Acknowledged или NAK, чтобы сообщить отправителю о необходимости повторной передачи данных.
Кто использует веб-сервер Apache?
Веб-серверы Apache HTTP используются более чем 67% всех веб-серверов в мире. Веб-серверы Apache легко настраиваются, они быстрые, надежные и безопасные. Это делает веб-серверы Apache обычным выбором лучших в своем классе компаний.
Альтернативы HTTP-серверу Apache
Хотя веб-серверы Apache очень популярны, они не единственные веб-серверы на рынке. Ниже приведен ряд альтернатив для HTTP-серверов Apache.
- Nginx
- Apache Tomcat
- Node.js
- Lighttpd
- Cherokee
- Microsoft IIS
- Appweb
- Hiawatha
Apache HTTP Server vs Tomcat
Проще говоря, HTTP-сервер Apache — это веб-сервер, предназначенный для обслуживания статических веб-страниц. Принимая во внимание, что Apache Tomcat — это сервер приложений, созданный для обслуживания приложений Java. Веб-страницы по-прежнему можно обслуживать через Apache Tomcat, но это будет менее эффективно, чем использование HTTP-сервера Apache.
Заключение: веб-сервер Apache
На протяжении последних нескольких десятилетий Apache зарекомендовал себя как основной продукт во многих популярных стеках и как основа Интернета в начале года.