Nginx — один из самых популярных в мире веб-серверов, на базе которого размещены некоторые из самых крупных сайтов интернета с огромным трафиком. Это облегченный вариант, который можно использовать как веб-сервер или как обратный прокси.
В этом руководстве мы расскажем, как установить Nginx на вашем сервере Ubuntu 20.04, настроить брандмауэр, управлять процессом Nginx и создать блоки сервера для хостинга более одного домена с одного сервера.
Прежде чем начать прохождение настоящего обучающего модуля, необходимо настроить на сервере обычного пользователя без прав root с привилегиями sudo. Информацию о том, как настроить стандартную учетную запись пользователя, можно найти в руководстве Начальная настройка сервера для Ubuntu 20.04.
Создав учетную запись, войдите в систему как пользователь без прав root.
Поскольку Nginx доступен в репозиториях Ubuntu по умолчанию, его можно установить из этих репозиториев с помощью системы пакетов apt
.
Так как это первое наше взаимодействие с системой пакетов apt
в этом сеансе, мы также обновим индекс локальных пакетов, чтобы получить доступ к актуальным спискам пакетов. Затем мы можем выполнить установку nginx
:
После принятия процедуры apt
выполнит установку Nginx и других требуемых зависимостей на ваш сервер.
Перед тестированием Nginx необходимо выполнить настройку программного обеспечения брандмауэра, чтобы разрешить доступ к службе. Nginx регистрирует себя как службу с помощью ufw
после установки, упрощая доступ к Nginx.
Для вывода списка конфигураций приложений, которые известны ufw
, необходимо ввести следующую команду:
Необходимо получить список профилей приложений:
OutputAvailable applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
Как показал вывод, есть три профиля, доступных для Nginx:
Рекомендуется применять самый ограничивающий профиль, который будет разрешать заданный трафик. Сейчас нам нужно будет разрешить трафик на порту 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)
В конце процесса установки Ubuntu 20.04 запускает Nginx. Веб-сервер уже должен быть запущен и работать.
Используйте команду systemd
init system, чтобы проверить работу службы:
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 по умолчанию:
Если вы находитесь на этой странице, ваш сервер работает корректно и готов к управлению.
Ваш веб-сервер запущен и работает, и теперь мы изучим некоторые базовые команды управления.
Чтобы остановить веб-сервер, введите:
Чтобы запустить остановленный веб-сервер, введите:
Чтобы остановить и снова запустить службу, введите:
Если вы просто вносите изменения в конфигурацию, во многих случаях Nginx может перезагружаться без отключения соединений. Для этого введите:
По умолчанию Nginx настроен на автоматический запуск при загрузке сервера. Если вы не хотите этого, вы можете отключить такое поведение с помощью следующей команды:
Чтобы перезагрузить службу для запуска во время загрузки, введите:
Вы научились выполнять базовые команды управления и должны быть готовы настроить сайт для размещения сразу нескольких доменов.
При использовании веб-сервера Nginx вы можете использовать блоки сервера (аналогичные виртуальным хостам в Apache) для инкапсуляции данных конфигурации и размещения на одном сервере нескольких доменов. Мы создадим домен your_domain, но вы должны заменить это имя собственным доменным именем. Дополнительную информацию о настройке доменного имени с помощью платформы DigitalOcean можно найти в нашей статье Введение в DigitalOcean DNS.
В Nginx на Ubuntu 20.04 по умолчанию включен один серверный блок, настроенный для вывода документов из директории /var/www/html
. Хотя это хорошо работает для отдельного сайта, при хостинге нескольких сайтов это неудобно. Вместо изменения /var/www/html
мы создадим в /var/www
структуру директорий для нашего сайта your_domain, оставив /var/www/html
как директорию по умолчанию для вывода в случае, если запросу клиента не соответствуют никакие другие сайты.
Создайте директорию для your_domain следующим образом, используя флаг -p
для создания необходимых родительских директорий:
Затем назначьте владение директорией с помощью переменной среды $USER
:
Разрешения корневых директорий веб-сервера должны быть правильными, если вы не изменяли значение unmask
, которое устанавливает разрешения файла по умолчанию. Чтобы убедиться, что разрешения корректны, позволить владельцу читать, писать и запускать файлы, а группам и другим пользователям разрешить только читать и запускать файлы, вы можете ввести следующую команду:
Затем создайте в качестве примера страницу index.html
, используя nano
или свой любимый редактор:
Добавьте в страницу следующий образец кода HTML:
Сохраните и закройте файл с помощью ввода CTRL
и X
, а затем Y
и ENTER
после завершения работы.
Для обслуживания этого контента Nginx необходимо создать серверный блок с правильными директивами. Вместо того чтобы изменять файл конфигурации по умолчанию напрямую, мы создадим новый файл в директории /etc/nginx/sites-available/your_domain
:
Введите следующий блок конфигурации, который похож на заданный по умолчанию, но обновлен с учетом новой директории и доменного имени:
Мы обновили конфигурацию root
с указанием новой директории и заменили server_name
на имя нашего домена.
Теперь мы активируем файл, создав ссылку в директории sites-enabled
, который Nginx считывает при запуске:
Два серверных блока активированы и настроены для реагирования на запросы на основе директив 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://example.com
, после чего должны увидеть примерно следующее:
Теперь вы научились управлять службой 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.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!