Введение
Nginx – один из самых популярных веб-серверов в мире и отвечает за хостинг некоторых из самых крупных и наиболее посещаемых сайтов в интернете. Это легкий выбор, который можно использовать как веб-сервер или обратный прокси.
В этом руководстве мы обсудим, как установить Nginx на вашем сервере Ubuntu 20.04, настроить брандмауэр, управлять процессом Nginx и настроить блоки сервера для хостинга более одного домена с одного сервера.
Упростите развертывание приложений с DigitalOcean App Platform. Развертывание напрямую из GitHub занимает всего несколько минут.
Предварительные требования
Прежде чем приступить к этому руководству, у вас должен быть обычный пользователь без прав root с настроенными привилегиями sudo на вашем сервере. Вы можете узнать, как настроить учетную запись обычного пользователя, следуя нашему руководству по начальной настройке сервера для Ubuntu 20.04.
Вы также, возможно, захотите зарегистрировать доменное имя перед завершением последних шагов этого руководства. Чтобы узнать больше о настройке доменного имени с DigitalOcean, пожалуйста, обратитесь к нашему Введение в DNS DigitalOcean.
Когда у вас будет доступна учетная запись, войдите в систему от имени вашего обычного пользователя, чтобы начать.
Шаг 1 – Установка Nginx
Поскольку Nginx доступен в репозиториях Ubuntu по умолчанию, его можно установить из этих репозиториев, используя систему упаковки apt
.
Поскольку это наше первое взаимодействие с системой упаковки apt
в этой сессии, мы обновим локальный индекс пакетов, чтобы иметь доступ к самым последним спискам пакетов. Затем мы можем установить nginx
:
После принятия процедуры 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 20.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 2020-04-20 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) могут быть использованы для инкапсуляции деталей конфигурации и размещения более одного домена на одном сервере. Мы настроим домен с именем your_domain, но вам следует заменить это своим собственным доменным именем.
На Ubuntu 20.04 Nginx по умолчанию имеет один блок сервера, настроенный для обслуживания документов из каталога /var/www/html
. Хотя это хорошо работает для одного сайта, это может стать неудобным, если вы размещаете несколько сайтов. Вместо изменения /var/www/html
, давайте создадим структуру каталогов внутри /var/www
для нашего сайта your_domain, оставив /var/www/html
на месте в качестве каталога по умолчанию для обслуживания, если запрос клиента не соответствует другим сайтам.
Создайте каталог для your_domain следующим образом, используя флаг -p
для создания всех необходимых родительских каталогов:
Затем назначьте владельца каталога с использованием переменной среды $USER
:
Разрешения на вашем корневом каталоге должны быть правильными, если вы не изменяли значение umask
, которое устанавливает права доступа по умолчанию. Чтобы убедиться, что ваши разрешения правильны и позволяют владельцу читать, записывать и выполнять файлы, предоставляя только права на чтение и выполнение группам и другим, вы можете ввести следующую команду:
Затем создайте образец страницы index.html
с использованием nano
или вашего любимого редактора:
Внутри добавьте следующий образец HTML:
Сохраните и закройте файл, нажав Ctrl+X
, чтобы выйти, затем когда будет предложено сохранить, введите Y
, а затем Enter
.
Чтобы Nginx мог обслуживать этот контент, необходимо создать блок сервера с правильными директивами. Вместо прямого изменения файла конфигурации по умолчанию давайте создадим новый в /etc/nginx/sites-available/your_domain
:
Вставьте в следующий конфигурационный блок, который аналогичен по умолчанию, но обновлен для нашего нового каталога и имени домена:
Обратите внимание, что мы обновили конфигурацию 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 20.04.
Чтобы настроить HTTPS для вашего доменного имени с бесплатным SSL-сертификатом, используя Let’s Encrypt, вы можете перейти к Как защитить Nginx с помощью Let’s Encrypt на Ubuntu 20.04.
Source:
https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-20-04