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

Введение

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

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

Развертывайте ваши приложения из GitHub с помощью Платформы приложений DigitalOcean. Позвольте DigitalOcean масштабировать ваше приложение.

Предварительные требования

Прежде чем начать это руководство, у вас должен быть обычный пользователь без прав root с настроенными привилегиями sudo на вашем сервере. Вы можете узнать, как настроить учетную запись обычного пользователя, следуя нашему руководству по начальной настройке сервера для Ubuntu 22.04.

Вы также возможно захотите зарегистрировать доменное имя перед завершением последних шагов этого руководства. Чтобы узнать больше о настройке доменного имени с DigitalOcean, пожалуйста, обратитесь к нашему Введение в DNS DigitalOcean.

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

Шаг 1 – Установка Nginx

Поскольку Nginx доступен в репозиториях по умолчанию Ubuntu, его можно установить из этих репозиториев, используя систему упаковки apt.

Поскольку это наше первое взаимодействие с системой упаковки apt в этой сессии, мы обновим наш локальный индекс пакетов, чтобы иметь доступ к самым последним спискам пакетов. Затем мы можем установить nginx:

  1. sudo apt update
  2. sudo apt install nginx

Нажмите Y, когда будете приглашены подтвердить установку. Если вам будет предложено перезапустить какие-либо службы, нажмите ENTER, чтобы принять значения по умолчанию и продолжить. apt установит Nginx и все необходимые зависимости на ваш сервер.

Шаг 2 – Настройка брандмауэра

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

Перечислите конфигурации приложений, с которыми ufw умеет работать, набрав:

  1. sudo ufw app list

Вы должны получить список профилей приложений:

Output
Available applications: Nginx Full Nginx HTTP Nginx HTTPS OpenSSH

Как показано в выводе, доступно три профиля для Nginx:

  • Nginx Full: Этот профиль открывает как порт 80 (нормальный, нешифрованный веб-трафик), так и порт 443 (шифрованный трафик TLS/SSL)
  • Nginx HTTP: Этот профиль открывает только порт 80 (нормальный, нешифрованный веб-трафик)
  • Nginx HTTPS: Этот профиль открывает только порт 443 (шифрованный трафик TLS/SSL)

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

Вы можете включить это, набрав:

  1. sudo ufw allow 'Nginx HTTP'

Вы можете проверить изменение, набрав:

  1. sudo ufw status

Вывод покажет, какой HTTP-трафик разрешен:

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)

Шаг 3 – Проверка вашего веб-сервера

По завершении процесса установки Ubuntu 22.04 запускает Nginx. Веб-сервер должен уже быть запущен и работать.

Мы можем проверить работу службы с помощью системы инициализации systemd, набрав:

  1. systemctl status nginx
Output
● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2022-03-01 16:08:19 UTC; 3 days ago Docs: man:nginx(8) Main PID: 2369 (nginx) Tasks: 2 (limit: 1153) Memory: 3.5M CGroup: /system.slice/nginx.service ├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; └─2380 nginx: worker process

Как подтверждено этим выводом, служба успешно запущена. Однако лучший способ проверить это – фактически запросить страницу от Nginx.

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

  1. curl -4 icanhazip.com

Когда у вас есть IP-адрес сервера, введите его в адресную строку вашего браузера:

http://your_server_ip

Вы должны получить стандартную страницу приветствия Nginx:

Если вы находитесь на этой странице, ваш сервер работает правильно и готов к управлению.

Шаг 4 – Управление процессом Nginx

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

Чтобы остановить ваш веб-сервер, введите:

  1. sudo systemctl stop nginx

Чтобы запустить веб-сервер, когда он остановлен, введите:

  1. sudo systemctl start nginx

Чтобы остановить, а затем снова запустить службу, введите:

  1. sudo systemctl restart nginx

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

  1. sudo systemctl reload nginx

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

  1. sudo systemctl disable nginx

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

  1. sudo systemctl enable nginx

Теперь вы освоили основные команды управления и должны быть готовы настроить сайт для размещения более одного домена.

При использовании веб-сервера Nginx серверные блоки (аналогичные виртуальным хостам в Apache) могут быть использованы для инкапсуляции деталей конфигурации и размещения более одного домена на одном сервере. Мы настроим домен под названием ваш_домен, но вам следует заменить это своим собственным именем домена.

Nginx в Ubuntu 22.04 имеет один серверный блок, включенный по умолчанию, настроенный на обслуживание документов из каталога /var/www/html. Хотя это работает хорошо для одного сайта, это может стать неудобным, если вы размещаете несколько сайтов. Вместо изменения /var/www/html давайте создадим структуру каталогов внутри /var/www для нашего сайта ваш_домен, оставив /var/www/html на месте как каталог по умолчанию, который будет обслуживаться, если запрос клиента не соответствует ни одному другому сайту.

Создайте каталог для ваш_домен следующим образом, используя флаг -p для создания необходимых родительских каталогов:

  1. sudo mkdir -p /var/www/your_domain/html

Затем назначьте владельца каталога с использованием переменной среды $USER:

  1. sudo chown -R $USER:$USER /var/www/your_domain/html

Разрешения на корневые каталоги вашего веб-сервера должны быть правильными, если вы не изменяли значение umask, которое устанавливает права доступа к файлам по умолчанию. Чтобы убедиться, что ваши разрешения правильны и позволяют владельцу читать, записывать и выполнять файлы, а также предоставляют только права на чтение и выполнение группам и другим, вы можете ввести следующую команду:

  1. sudo chmod -R 755 /var/www/your_domain

Затем создайте пример страницы index.html с помощью nano или вашего любимого редактора:

  1. nano /var/www/your_domain/html/index.html

Внутри добавьте следующий образец HTML:

/var/www/your_domain/html/index.html
<html>
    <head>
        <title>Welcome to your_domain!</title>
    </head>
    <body>
        <h1>Success!  The your_domain server block is working!</h1>
    </body>
</html>

Сохраните и закройте файл, нажав Ctrl+X для выхода, затем когда будет предложено сохранить, Y, а затем Enter.

Чтобы Nginx мог обслуживать этот контент, необходимо создать блок сервера с правильными директивами. Вместо прямого изменения файла конфигурации по умолчанию давайте создадим новый файл по адресу /etc/nginx/sites-available/ваш_домен:

  1. sudo nano /etc/nginx/sites-available/your_domain

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

/etc/nginx/sites-available/your_domain
server {
        listen 80;
        listen [::]:80;

        root /var/www/your_domain/html;
        index index.html index.htm index.nginx-debian.html;

        server_name your_domain www.your_domain;

        location / {
                try_files $uri $uri/ =404;
        }
}

Обратите внимание, что мы обновили конфигурацию root для нашего нового каталога и server_name для нашего имени домена.

Затем давайте активируем файл, создав ссылку на него в каталоге sites-enabled, из которого Nginx читает при запуске:

  1. sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/

Примечание: Nginx использует распространенную практику, называемую символическими ссылками, или symlinks, чтобы отслеживать, какие из ваших блоков сервера включены. Создание символической ссылки подобно созданию ярлыка на диске, чтобы вы могли позже удалить ярлык из каталога sites-enabled, сохраняя при этом блок сервера в sites-available, если захотите его включить.

Теперь два блока сервера включены и настроены для ответа на запросы на основе своих директив listen и server_name (вы можете узнать больше о том, как Nginx обрабатывает эти директивы здесь):

  • your_domain: Будет отвечать на запросы для your_domain и www.your_domain.
  • default: Будет отвечать на любые запросы на порту 80, которые не соответствуют другим двум блокам.

Для предотвращения возможной проблемы с памятью хеш-бакета, которая может возникнуть при добавлении дополнительных имен серверов, необходимо отрегулировать одно значение в файле /etc/nginx/nginx.conf. Откройте файл:

  1. sudo nano /etc/nginx/nginx.conf

Найдите директиву server_names_hash_bucket_size и удалите символ #, чтобы раскомментировать строку. Если вы используете nano, вы можете быстро искать слова в файле, нажав CTRL и w.

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

/etc/nginx/nginx.conf
...
http {
    ...
    server_names_hash_bucket_size 64;
    ...
}
...

Сохраните и закройте файл, когда закончите.

Затем протестируйте, чтобы убедиться, что ваши файлы Nginx не содержат синтаксических ошибок:

  1. sudo nginx -t

Если проблем нет, перезапустите Nginx, чтобы включить ваши изменения:

  1. sudo systemctl restart nginx

Теперь Nginx должен обслуживать ваше доменное имя. Вы можете проверить это, перейдя по адресу http://ваш_домен, где вы должны увидеть что-то вроде этого:

Шаг 6 – Ознакомление с важными файлами и каталогами Nginx

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

Содержание

  • /var/www/html: Фактическое веб-содержимое, которое по умолчанию состоит только из стандартной страницы Nginx, которую вы видели ранее, обслуживается из каталога /var/www/html. Это можно изменить, изменив файлы конфигурации Nginx.

Конфигурация сервера

  • /etc/nginx: Каталог конфигурации Nginx. Здесь находятся все файлы конфигурации Nginx.
  • /etc/nginx/nginx.conf: Основной файл конфигурации Nginx. Его можно изменить, чтобы внести изменения в глобальную конфигурацию Nginx.
  • /etc/nginx/sites-available/: Каталог, в котором можно хранить серверные блоки для каждого сайта. Nginx не будет использовать файлы конфигурации, найденные в этом каталоге, если они не будут связаны с каталогом sites-enabled. Обычно в этом каталоге выполняется вся конфигурация серверного блока, а затем она активируется путем создания ссылок на другой каталог.
  • /etc/nginx/sites-enabled/: Каталог, где хранятся активированные серверные блоки для каждого сайта. Обычно они создаются путем создания ссылок на файлы конфигурации, найденные в каталоге sites-available.
  • /etc/nginx/snippets: Этот каталог содержит фрагменты конфигурации, которые можно включить в другие части конфигурации Nginx. Повторяющиеся сегменты конфигурации хороши для рефакторинга в фрагменты.

Журналы сервера

  • /var/log/nginx/access.log: Каждый запрос к вашему веб-серверу записывается в этот журнальный файл, если Nginx не настроен иначе.
  • /var/log/nginx/error.log: Любые ошибки Nginx будут записаны в этот журнал.

Заключение

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

Если вы хотите построить более полный стек приложений, ознакомьтесь с статьей Как установить Linux, Nginx, MySQL, PHP (стек LEMP) на Ubuntu 22.04.

Чтобы настроить HTTPS для вашего доменного имени с бесплатным SSL-сертификатом, используя Let’s Encrypt, вы можете перейти к Как обеспечить безопасность Nginx с Let’s Encrypt на Ubuntu 22.04.

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-22-04