Задать вопрос
Все статьи / Полезная информация / Как установить Nginx на Ubuntu
Найти результаты:
Период:
с:
 
по:
Помощь в поиске

Помощь в поиске

apple banana
Найти записи, которые содержат хотя бы одно из двух слов.

+apple +juice
Найти записи, которые содержат оба слова.

+apple macintosh
Найти записи, которые содержат слово 'apple', но положение записей выше, если они также содержат 'macintosh'.

+apple -macintosh
Найти записи, которые содержат слово 'apple', но не 'macintosh'.

+apple ~macintosh
Найти записи, которые содержат слово 'apple', но если запись также содержит слово 'macintosh', rate it lower than if row does not. Это более "мягкий" чем поиск '+apple -macintosh', для которого наличие 'macintosh' вызывает что записи не будут возвращены вовсе.

+apple +(>turnover <strudel)
Найти записи, которые содержат слова 'apple' и 'turnover', или 'apple' и 'strudel' (в любом порядке), но ранг 'apple turnover' выше чем 'apple strudel'.

apple*
Найти записи, которые содержат такие слова как 'apple', 'apples', 'applesauce', или 'applet'.

"some words"
Найти записи, которые содержат точную фразу 'some words' (например записи содержащие 'some words of wisdom', но не "some noise words").

Как установить Nginx на Ubuntu

Nginx — это высокопроизводительный веб-сервер и обратный прокси-сервер, используемый для обслуживания веб-сайтов, балансировки нагрузки и кэширования. Он разработан для быстрой обработки большого количества одновременных подключений при минимальном потреблении ресурсов.

В этой статье вы узнаете, как установить Nginx на Ubuntu, настроить его для работы и проверить корректность установки.

Для чего нужен Nginx

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

Главные задачи Nginx:

  • Обслуживание веб-сайтов. Он принимает запросы от пользователей и выдает им нужные страницы, изображения, файлы и другие ресурсы.
  • Обработка статического контента. Nginx отлично справляется с передачей файлов — HTML, CSS, JavaScript, изображений и видео, делая это гораздо быстрее, чем многие другие серверы.
  • Работа как обратный прокси. Сервер может принимать запросы и перенаправлять их к другим службам (например, php-fpm или Node.js), разгружая основное приложение.
  • Балансировка нагрузки. Nginx распределяет запросы между несколькими серверами, что повышает отказоустойчивость и скорость работы сайта.
  • Кэширование данных. Он может сохранять копии часто запрашиваемых страниц и выдавать их пользователям без обращения к основному приложению, сокращая время отклика.
  • Защита и безопасность. Поддерживает SSL/TLS для шифрования соединений, ограничивает количество запросов и помогает предотвратить атаки.

Nginx используют как для небольших сайтов, так и для крупных систем с миллионами пользователей.

Установка Nginx 

Чтобы установить веб-сервер Nginx, достаточно иметь компьютер или виртуальную машину с установленной Ubuntu. Этот сервер входит в стандартные репозитории системы, поэтому скачивать дополнительные пакеты не потребуется — установка выполняется всего несколькими командами в терминале.

Сначала стоит обновить список доступных пакетов, чтобы система могла получить самые свежие версии программ:

sudo apt update

После завершения обновления можно установить Nginx:

sudo apt install nginx

Процесс установки займет несколько минут. Как только он завершится, добавим Nginx в автозагрузку, чтобы сервер автоматически запускался при каждом включении системы:

sudo systemctl enable nginx

Далее важно убедиться, что веб-сервер действительно запущен и работает. Проверим его статус командой:

sudo service nginx status

Если в строке состояния появится сообщение Active: active (running), значит установка прошла успешно, и сервер функционирует корректно.

Проверить работу можно и через браузер: достаточно ввести IP-адрес вашей машины или сервера в адресной строке. Если в ответ откроется стартовая страница Nginx с приветственным сообщением, то все настроено правильно.

Напоследок стоит убедиться, что Nginx действительно добавлен в автозагрузку. Для этого используем команду:

sudo systemctl is-enabled nginx

Если система ответит enabled, значит веб-сервер будет автоматически запускаться при каждом старте Ubuntu — установка завершена успешно, и Nginx готов к использованию.

Настройка файрвола

После установки Nginx необходимо настроить файрвол, чтобы ограничить доступ к серверу и оставить открытыми только нужные порты: 22 (SSH), 80 (HTTP) и 443 (HTTPS).

Порт 22 используется для удаленного подключения по SSH, а 80 и 443 — для обмена данными между сайтом и пользователями. При этом HTTPS — это защищенная версия HTTP, использующая SSL-сертификат для шифрования трафика.

Для начала установите утилиту UFW (Uncomplicated Firewall), которая упрощает настройку брандмауэра:

sudo apt install ufw

После установки откройте файл конфигурации, где будут описаны правила для веб-сервера Nginx:

sudo nano /etc/ufw/applications.d/nginx.ini

Заполните файл следующим образом:

[Nginx HTTP]
title=Web Server
description=Enable NGINX HTTP traffic
ports=80/tcp
[Nginx HTTPS]
title=Web Server (HTTPS)
description=Enable NGINX HTTPS traffic
ports=443/tcp
[Nginx Full]
title=Web Server (HTTP,HTTPS)
description=Enable NGINX HTTP and HTTPS traffic
ports=80,443/tc
p

Сохраните изменения и закройте редактор. Затем проверьте, что система распознала добавленные настройки:

sudo ufw app list

Если в списке появится Nginx, значит все сделано верно. Теперь включите файервол и разрешите передачу трафика по нужным портам:

sudo ufw enable
sudo ufw allow 'Nginx Full'
sudo ufw allow 'OpenSSH'

Команда ufw enable активирует брандмауэр, ufw allow 'Nginx Full' открывает порты 80 и 443, а ufw allow 'OpenSSH' — порт 22 для удаленного доступа.
Чтобы убедиться, что все работает корректно, проверьте текущие правила:

sudo ufw status

Если в статусе указаны разрешенные подключения для SSH, HTTP и HTTPS, значит файервол настроен правильно и ваш сервер теперь защищен от нежелательного трафика.

Настройка Nginx

После установки и настройки файрвола можно переходить к конфигурации Nginx. Управление этим веб-сервером сводится к редактированию и поддержке его конфигурационных файлов, которые находятся в каталоге /etc/nginx. В этой директории расположены три основных элемента: файл nginx.conf и два каталога — sites-available и sites-enabled.

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

Каталог sites-available содержит файлы с настройками виртуальных хостов — отдельных сайтов, работающих на одном сервере. Каждый файл описывает конкретный сайт: его доменное имя, IP-адрес, директории, логи и параметры безопасности. Каталог sites-enabled включает только активные сайты. Обычно он содержит ссылки на конфигурационные файлы из sites-available, что позволяет легко включать или отключать сайты без удаления их настроек.

Чтобы просмотреть главный конфигурационный файл, откройте его с помощью текстового редактора:

sudo nano /etc/nginx/nginx.conf

В нем можно увидеть структуру, разделенную на модули — директивы. 

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

Рассмотрим некоторые из ключевых директив, встречающихся в конфигурации:

Директива Описание
user Определяет пользователя, от имени которого выполняются процессы Nginx
worker_processes Указывает количество рабочих процессов. Как правило, соответствует числу ядер процессора (значение auto устанавливает автоматически)
pid Путь к файлу, в котором хранится идентификатор главного процесса
include Подключает дополнительные файлы конфигурации
events Контекст, в котором задаются параметры, которые влияют на сетевые соединения
worker_connections Максимальное число одновременных соединений для одного рабочего процесса
multi_accept Если установлено on, рабочий процесс принимает все новые соединения сразу, а не по одному
use Определяет метод обработки соединений (обычно выбирается автоматически)
http Основной блок, который задает параметры HTTP-сервера
sendfile Включает или отключает использование метода быстрой передачи файлов sendfile()
tcp_nopush Заставляет сервер отправлять заголовки HTTP-ответов одним пакетом, повышая производительность
tcp_nodelay Позволяет не буферизировать данные и отправлять их короткими очередями
keepalive_timeout Время ожидания неактивного соединения перед его закрытием
keepalive_requests Максимальное число запросов, которое может быть выполнено в одном keep-alive соединении
error_log Путь к файлу журнала ошибок. Директиву можно указывать в разных секциях (http, server и других)
gzip Включает сжатие контента для ускорения загрузки страниц

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

sudo nginx -t

Если система сообщит, что тест пройден успешно, перезапустите сервер командой:

sudo systemctl restart nginx

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

Настройка блоков server

Чтобы сервер Nginx корректно обслуживал разные сайты или домены, необходимо настроить блоки server — они аналогичны виртуальным хостам в Apache. Каждый блок отвечает за один сайт и содержит его конфигурацию: доменное имя, корневую директорию, настройки безопасности и логи. Это позволяет размещать несколько сайтов на одном сервере, при этом у каждого будут свои отдельные файлы и параметры.

По умолчанию Nginx в Ubuntu настроен на обслуживание контента из директории /var/www/html. Этот вариант подходит для одного сайта, но если нужно разместить несколько, лучше создать отдельную структуру каталогов.

Создайте папку для вашего сайта (вместо myproject.ru укажите свой домен):

sudo mkdir -p /var/www/ myproject.ru/html

Назначьте владельцем созданной директории текущего пользователя:

sudo chown -R $USER:$USER /var/www/myproject.ru/public_html

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

sudo chmod -R 755 /var/www/myproject.ru

Теперь создайте тестовую страницу, чтобы проверить работу блока:

sudo nano /var/www/myproject.ru/public_html/index.html

Вставьте пример содержимого:

<html>
    <head>
        <meta charset="UTF-8">
        <title>Добро пожаловать на myproject.ru!</title>
    </head>
    <body>
        <h1>Сайт myproject.ru успешно работает!</h1>
        <p>Поздравляем! Ваш блок server Nginx настроен и доступен.</p>
    </body>
</html>

Сохраните изменения и закройте редактор.

Далее нужно создать сам конфигурационный файл блока server, который будет описывать, как Nginx должен обрабатывать запросы к этому домену. Создайте новый файл:

sudo nano /etc/nginx/sites-available/myproject.ru

И добавьте туда следующее содержимое:

server {
    listen 80;
    listen [::]:80;
    root /var/www/myproject.ru/public_html;
    index index.html index.htm;
    server_name myproject.ru www.myproject.ru;
    location / {
        try_files $uri $uri/ =404;
    }
}

В этом примере директива root указывает путь к корневой директории сайта, а server_name — доменное имя, на которое сервер будет реагировать.

Чтобы активировать этот блок, создайте символическую ссылку в каталоге sites-enabled, из которого Nginx читает конфигурации при запуске:

sudo ln -s /etc/nginx/sites-available/myproject.ru /etc/nginx/sites-enabled/

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

sudo nano /etc/nginx/nginx.conf

Найдите строку # server_names_hash_bucket_size и удалите символ #, чтобы раскомментировать ее:

server_names_hash_bucket_size 64;

Эта настройка предотвращает возможные ошибки с памятью при использовании длинных имен доменов.

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

sudo nginx -t

Если результат проверки сообщает, что «syntax is ok» и «test is successful», перезапустите сервер, чтобы применить настройки:

sudo systemctl restart nginx

Теперь Nginx будет обслуживать ваш домен your_domain, а также по умолчанию — сайт из /var/www/html, если запрос не совпадает ни с одним другим блоком. 

Проверка работы 

После того как вы создали и активировали серверный блок, стоит убедиться, что Nginx действительно обслуживает ваш сайт правильно.

Для начала проверьте, что сам веб-сервер работает и запущен:

sudo systemctl status nginx

Если в выводе появится строка Active: active (running), значит Nginx работает.
Теперь нужно убедиться, что созданный серверный блок корректно подключен. Выполните команду:

sudo nginx -t

Она проверит конфигурацию на наличие ошибок. Если все в порядке, вы увидите сообщение:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok  
nginx: configuration file test is successful

После этого перезапустите сервер, чтобы применить изменения:

sudo systemctl restart nginx

Теперь можно проверить работу сайта через браузер. Откройте в адресной строке IP-адрес сервера или ваш домен (например, http://myproject.ru). Если все сделано правильно, вы увидите вашу тестовую страницу — ту самую с заголовком:

Сайт myproject.ru успешно работает!

Типичные ошибки Nginx

При работе с Nginx иногда возникают ошибки, которые мешают корректной работе сайта или приложения. Большинство из них связаны с неправильной настройкой серверных блоков, прав доступа или сбоем вспомогательных служб (например, PHP-FPM). Чтобы понять причину проблемы, первым делом проверьте статус сервиса:

sudo systemctl status nginx

Если Nginx не запущен — перезапустите его. После этого загляните в журналы ошибок:

sudo tail -f /var/log/nginx/error.log

Анализ логов — лучший способ диагностировать неисправности.

Какие есть наиболее распространенные ошибки:

403 Forbidden

Ошибка 403 Forbidden указывает на то, что доступ к запрошенному ресурсу запрещен. Чаще всего причина — неверные права на файлы или каталоги, попытка доступа к защищенной директории либо ограничение, заданное в конфигурации Nginx. 

Как исправить: убедитесь, что у веб-сервера есть права на чтение нужных файлов и что в настройках не используется директива deny all; без необходимости.

404 Not Found

Ошибка 404 Not Found означает, что запрашиваемый файл или страница отсутствуют на сервере. Это может произойти, если путь к файлам в директиве root указан неверно, файл был удален или неправильно настроен блок location.

Как исправить: проверьте, что указанный путь совпадает с фактическим расположением файлов сайта, и при необходимости настройте пользовательскую страницу ошибки через директиву error_page 404 /404.html;.

413 Request Entity Too Large 

Ошибка  появляется, когда клиент пытается загрузить файл, превышающий допустимый размер, установленный на сервере. 

Как исправить: увеличьте лимит загрузки, добавив в конфигурацию Nginx директиву client_max_body_size с нужным значением, например:

client_max_body_size 100m;

После сохранения изменений перезапустите сервер, чтобы новые параметры вступили в силу.

502 Bad Gateway

Ошибка 502 Bad Gateway означает, что Nginx не получил ответ от сервиса, на который перенаправляет запрос — чаще всего от php-fpm. Такое случается, если php-fpm не запущен, указан неверный путь к сокету в директиве fastcgi_pass или процесс не справляется с нагрузкой. 

Как исправить: проверьте, запущен ли php-fpm, убедитесь в правильности его адреса в конфигурации и при необходимости увеличьте количество рабочих процессов или оптимизируйте обработку запросов.

503 Service Unavailable

Ошибка 503 Service Unavailable возникает, когда сервер временно не может обработать запрос. Чаще всего это связано с перегрузкой, техническими работами или остановкой службы, например php-fpm.

Как исправить: убедитесь, что все нужные сервисы запущены, перезапустите Nginx и проверьте логи — если перегрузка повторяется, стоит оптимизировать настройки или настроить балансировку нагрузки.

504 Gateway Time-out

Эта ошибка означает, что Nginx не получил ответ от внутреннего сервиса (например, php-fpm) за установленное время ожидания. Часто это происходит из-за медленной работы скрипта или недостаточных ресурсов. 

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

Основные команды для работы с сервером Nginx

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

Команда Назначение
sudo systemctl start nginx Запускает веб-сервер Nginx
sudo systemctl stop nginx Останавливает работу Nginx
sudo systemctl restart nginx Перезапускает Nginx
sudo systemctl reload nginx Перезагружает конфигурацию без остановки сервиса
sudo systemctl enable nginx Добавляет Nginx в автозагрузку — сервер будет запускаться автоматически при включении системы
sudo systemctl disable nginx Убирает Nginx из автозагрузки, чтобы он не запускался при старте ОС
sudo systemctl status nginx Показывает текущее состояние сервиса: активен ли он, работает ли корректно, есть ли ошибки
sudo nginx -t Проверяет конфигурационные файлы на наличие ошибок
sudo nginx -v Отображает текущую версию установленного Nginx
sudo nginx -V Показывает расширенную информацию о сборке сервера, включая модули и пути к конфигурациям


 

 

Предыдущая статья
Как установить Astra Linux
Следующая статья
Как установить PyCharm на Ubuntu и Debian