Схема работы веб-сервера в общих чертах выглядит так:
При любом взаимодействии с сайтом происходит работа с веб-сервером. Когда вы открыли эту страницу, ваш браузер послал запрос веб-серверу, а тот прислал в качестве ответа эту страницу со всеми картинками, текстом и формами обратной связи.
Веб-сервер — это общее название для ряда программ. Так же как существуют разные браузеры, существуют разные веб-серверы: Apache, IIS, lighttpd, Google Web Server и другие. Но сейчас наибольшей популярностью пользуется веб-сервер Nginx.
Nginx был разработан Игорем Сысоевым в 2004 году. Его создали как альтернативу популярному тогда Apache, чтобы быстрее обрабатывать статичный контент: блоги, лендинги, страницы интернет-магазинов. Сейчас Nginx — стандарт для большинства компаний, занимающихся веб-разработкой. И уметь с ним работать должен каждый веб-разработчик.
Самостоятельно принимать, обрабатывать и отдавать клиентам запросы.
Обработка в этом случае происходит внутри сервера, с помощью специального модуля. Каждый запрос Nginx делит на небольшие однотипные структуры — рабочие соединения — и обрабатывает несколько таких соединений параллельно. После выполнения все они сливаются в единый блок и возвращаются в качестве ответа. Такое распараллеливание позволяет быстрее обрабатывать запросы.
Выступать в качестве прокси-сервера.
В больших и сложных проектах для обработки клиентских запросов обычно используют отдельные сервисы или систему микросервисов. С помощью сервера Nginx сложно и неудобно обрабатывать много запросов разных типов, система становится сложной и неустойчивой. Поэтому он выступает в качестве «пересыльщика» — принимает запрос от клиента, передаёт его отдельному серверу для обработки, получает ответ от сервера и отправляет клиенту.
В таком случае отдельные сервисы не нагружают себя приёмом и пересылкой запросов, а только максимально быстро их обрабатывают. А Nginx решает, какому именно сервису отправить запрос, и отвечает за быстрое взаимодействие между клиентом и логикой сайта.
Nginx уступает Apache в работе с динамическим контентом — тем, который генерируется специально для клиента. Например, профиль пользователя в соцсетях можно заранее собрать на сервере и отдать клиенту, это — динамический контент.
Nginx превосходит Apache в работе со статическим контентом — тем, который одинаков для всех пользователей. Странички товаров, лендинги, блоги, информационные сайты — всё это статический контент. Его в интернете гораздо больше, чем динамического. И именно поэтому стандартом стал сервер Nginx, который работает с таким контентом гораздо быстрее и эффективнее.
В редких случаях, когда динамического контента на сайте намного больше, Apache могут отдать предпочтение. Но в крупных проектах такое встречается не часто, поэтому серьёзные компании всё-таки выбирают в качестве веб-сервера именно Nginx либо вообще разрабатывают своё решение.
Установка Nginx зависит от того, какую ОС вы используете. Чаще всего веб-сервер устанавливают на Linux. Есть стандартные пакеты и инструкции для наиболее популярных дистрибутивов прямо на сайте Nginx. Всё на русском языке.
Если вам нужно поставить Nginx на FreeBSD или собрать специфический функционал из исходных файлов, обратитесь к этой инструкции.
Все конфигурации описываются с помощью директив, их же используют для подключения модулей. Например, такая строчка:
listen 8080;
Сложная директива может включать в себя несколько простых:
server {
listen 8080;
root /data/up1;
location / {
}
}
В конфигурации можно описать перенаправление запросов:
server {
location / {
proxy_pass http://localhost:8080;
}
location /images/ {
root /data;
}
}
location ~ \.(gif|jpg|png)$ {
root /data/images;
}
server {
location / {
fastcgi_pass localhost:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param QUERY_STRING $query_string;
}
location ~ \.(gif|jpg|png)$ {
root /data/images;
}
}
nginx -t
Также сервером Nginx можно управлять через консоль сигналами:
● stop — быстро завершить;
● quit — плавно завершить;
● reload — перезагрузить конфигурационный файл;
● reopen — открыть лог-файлы заново.
Для этого нужно написать в консоль команду, например:
nginx -s stop
sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl reload nginx
После запуска Nginx работает сам по себе, но нужно постоянно смотреть за тем, как он работает, обслуживать, периодически решать инфраструктурные задачи. По сути, «работать с Nginx» — это гораздо больше, чем просто прописать правильную конфигурацию.
Читать также: