Введение
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
:
Нажмите Y
, когда будете приглашены подтвердить установку. Если вам будет предложено перезапустить какие-либо службы, нажмите ENTER
, чтобы принять значения по умолчанию и продолжить. apt
установит Nginx и все необходимые зависимости на ваш сервер.
Шаг 2 – Настройка брандмауэра
Перед тестированием Nginx необходимо настроить программное обеспечение брандмауэра для разрешения доступа к сервису. Nginx регистрирует себя как службу с ufw
при установке, что делает простым разрешение доступа к Nginx.
Перечислите конфигурации приложений, с которыми ufw
умеет работать, набрав:
Вы должны получить список профилей приложений:
OutputAvailable applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
Как показано в выводе, доступно три профиля для Nginx:
- Nginx Full: Этот профиль открывает как порт 80 (нормальный, нешифрованный веб-трафик), так и порт 443 (шифрованный трафик TLS/SSL)
- Nginx HTTP: Этот профиль открывает только порт 80 (нормальный, нешифрованный веб-трафик)
- Nginx HTTPS: Этот профиль открывает только порт 443 (шифрованный трафик TLS/SSL)
Рекомендуется включить наиболее строгий профиль, который все еще позволяет настроенному вами трафику. В настоящее время нам нужно разрешить только трафик на порту 80.
Вы можете включить это, набрав:
Вы можете проверить изменение, набрав:
Вывод покажет, какой HTTP-трафик разрешен:
OutputStatus: 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
, набрав:
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-адрес, полученный из другого места в интернете:
Когда у вас есть IP-адрес сервера, введите его в адресную строку вашего браузера:
http://your_server_ip
Вы должны получить стандартную страницу приветствия Nginx:
Если вы находитесь на этой странице, ваш сервер работает правильно и готов к управлению.
Шаг 4 – Управление процессом Nginx
Теперь, когда ваш веб-сервер запущен и работает, давайте рассмотрим несколько основных команд управления.
Чтобы остановить ваш веб-сервер, введите:
Чтобы запустить веб-сервер, когда он остановлен, введите:
Чтобы остановить, а затем снова запустить службу, введите:
Если вы только вносите изменения в конфигурацию, Nginx часто может перезагрузиться, не разрывая соединения. Для этого введите:
По умолчанию Nginx настроен на автоматический запуск при загрузке сервера. Если это не то, что вам нужно, вы можете отключить это поведение, набрав:
Для повторного включения службы для запуска при загрузке вы можете набрать:
Теперь вы освоили основные команды управления и должны быть готовы настроить сайт для размещения более одного домена.
Шаг 5 – Настройка серверных блоков (рекомендуется)
При использовании веб-сервера Nginx серверные блоки (аналогичные виртуальным хостам в Apache) могут быть использованы для инкапсуляции деталей конфигурации и размещения более одного домена на одном сервере. Мы настроим домен под названием ваш_домен, но вам следует заменить это своим собственным именем домена.
Nginx в Ubuntu 22.04 имеет один серверный блок, включенный по умолчанию, настроенный на обслуживание документов из каталога /var/www/html
. Хотя это работает хорошо для одного сайта, это может стать неудобным, если вы размещаете несколько сайтов. Вместо изменения /var/www/html
давайте создадим структуру каталогов внутри /var/www
для нашего сайта ваш_домен, оставив /var/www/html
на месте как каталог по умолчанию, который будет обслуживаться, если запрос клиента не соответствует ни одному другому сайту.
Создайте каталог для ваш_домен следующим образом, используя флаг -p
для создания необходимых родительских каталогов:
Затем назначьте владельца каталога с использованием переменной среды $USER
:
Разрешения на корневые каталоги вашего веб-сервера должны быть правильными, если вы не изменяли значение umask
, которое устанавливает права доступа к файлам по умолчанию. Чтобы убедиться, что ваши разрешения правильны и позволяют владельцу читать, записывать и выполнять файлы, а также предоставляют только права на чтение и выполнение группам и другим, вы можете ввести следующую команду:
Затем создайте пример страницы index.html
с помощью nano
или вашего любимого редактора:
Внутри добавьте следующий образец HTML:
Сохраните и закройте файл, нажав Ctrl+X
для выхода, затем когда будет предложено сохранить, Y
, а затем Enter
.
Чтобы Nginx мог обслуживать этот контент, необходимо создать блок сервера с правильными директивами. Вместо прямого изменения файла конфигурации по умолчанию давайте создадим новый файл по адресу /etc/nginx/sites-available/ваш_домен
:
Вставьте следующий блок конфигурации, аналогичный по устройству по умолчанию, но обновленный для нашего нового каталога и имени домена:
Обратите внимание, что мы обновили конфигурацию root
для нашего нового каталога и server_name
для нашего имени домена.
Затем давайте активируем файл, создав ссылку на него в каталоге sites-enabled
, из которого Nginx читает при запуске:
Примечание: Nginx использует распространенную практику, называемую символическими ссылками, или symlinks, чтобы отслеживать, какие из ваших блоков сервера включены. Создание символической ссылки подобно созданию ярлыка на диске, чтобы вы могли позже удалить ярлык из каталога sites-enabled
, сохраняя при этом блок сервера в sites-available
, если захотите его включить.
Теперь два блока сервера включены и настроены для ответа на запросы на основе своих директив listen
и server_name
(вы можете узнать больше о том, как Nginx обрабатывает эти директивы здесь):
your_domain
: Будет отвечать на запросы дляyour_domain
иwww.your_domain
.default
: Будет отвечать на любые запросы на порту 80, которые не соответствуют другим двум блокам.
Для предотвращения возможной проблемы с памятью хеш-бакета, которая может возникнуть при добавлении дополнительных имен серверов, необходимо отрегулировать одно значение в файле /etc/nginx/nginx.conf
. Откройте файл:
Найдите директиву server_names_hash_bucket_size
и удалите символ #
, чтобы раскомментировать строку. Если вы используете nano, вы можете быстро искать слова в файле, нажав CTRL
и w
.
Примечание: Закомментирование строк кода – обычно путем добавления #
в начало строки – еще один способ отключения их без фактического удаления. Многие файлы конфигурации поставляются с несколькими параметрами, закомментированными, чтобы их можно было включить или отключить, переключая их между активным кодом и документацией.
...
http {
...
server_names_hash_bucket_size 64;
...
}
...
Сохраните и закройте файл, когда закончите.
Затем протестируйте, чтобы убедиться, что ваши файлы Nginx не содержат синтаксических ошибок:
Если проблем нет, перезапустите 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