Введение
Nginx — один из самых популярных веб-серверов в мире, на котором размещены некоторые из крупнейших и самых посещаемых сайтов в интернете. В большинстве случаев он более экономичен, чем Apache, и может использоваться как веб-сервер или обратный прокси-сервер.
В этом руководстве вы узнаете, как установить Nginx на сервер Ubuntu 18.04, а также о важных файлах и каталогах Nginx.
Предпосылки
Прежде чем приступить к выполнению этого руководства, вам необходимо настроить на сервере учётную запись обычного пользователя (не root) с привилегиями sudo и базовым брандмауэром. Вы можете узнать, как настроить учётную запись обычного пользователя, следуя нашему руководству по базовой настройке сервера для Ubuntu 18.04.
Как только у вас появится доступная учетная запись, войдите в систему как обычный пользователь, чтобы начать работу.
Шаг 1 — Установка Nginx
Поскольку Nginx доступен в репозиториях Ubuntu по умолчанию, его можно установить из этих репозиториев с помощью системы пакетов apt.
Поскольку это может быть ваше первое взаимодействие с системой пакетов apt в этом сеансе, обновите локальный каталог пакетов, чтобы получить доступ к актуальным спискам пакетов. После этого вы можете установить nginx:
sudo apt update
sudo apt install nginxПосле принятия процедуры apt установит Nginx и все необходимые зависимости на ваш сервер.
Шаг 2 — Настройка брандмауэра
Перед тестированием Nginx необходимо настроить брандмауэр так, чтобы он разрешил доступ к сервису. После установки Nginx регистрируется как сервис в UFW, что упрощает разрешение доступа к Nginx.
Чтобы получить список конфигураций приложений, с которыми умеет работать ufw, введите следующее:
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)
Рекомендуется включить самый строгий профиль, который всё ещё разрешает настроенный вами трафик. Поскольку вы ещё не настроили SSL для своего сервера в рамках этого руководства, вам нужно разрешить трафик только через порт 80.
Вы можете включить это, введя следующее:
sudo ufw allow 'Nginx HTTP'Затем подтвердите изменение:
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 18.04 запустит Nginx. Веб-сервер должен быть запущен.
Проверьте с помощью systemd init, работает ли служба:
systemctl status nginxOutput
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: en
Active: active (running) since Fri 2021-10-01 21:36:15 UTC; 35s ago
Docs: man:nginx(8)
Main PID: 9039 (nginx)
Tasks: 2 (limit: 1151)
CGroup: /system.slice/nginx.service
├─9039 nginx: master process /usr/sbin/nginx -g daemon on; master_pro
└─9041 nginx: worker processЭтот вывод показывает, что служба успешно запущена. Однако лучший способ проверить это — фактически запросить страницу у Nginx.
Вы можете открыть целевую страницу Nginx по умолчанию, перейдя по IP-адресу своего сервера, чтобы убедиться, что программное обеспечение работает корректно. Если вы не знаете IP-адрес своего сервера, его можно узнать несколькими способами.
Попробуйте ввести следующее в командную строку вашего сервера:
ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'Вы получите несколько строк. Попробуйте каждую из них в браузере, чтобы проверить их работоспособность.
Альтернативой является выполнение следующей команды, которая должна создать ваш публичный IP-адрес, поскольку он идентифицирован из другого места в Интернете:
curl -4 icanhazip.comУзнав IP-адрес вашего сервера, введите его в адресную строку браузера:
http://your_server_ipВы должны получить целевую страницу Nginx по умолчанию:
Эта страница поставляется с Nginx для проверки правильности работы сервера.
Шаг 4 — Управление процессом Nginx
Теперь, когда ваш веб-сервер настроен, давайте рассмотрим некоторые основные административные команды.
Чтобы остановить веб-сервер, введите следующее:
sudo systemctl stop nginxЧтобы запустить веб-сервер в случае его остановки, введите следующее:
sudo systemctl start nginxЧтобы остановить и перезапустить службу, введите следующее:
sudo systemctl restart nginxЕсли вы просто вносите изменения в конфигурацию, зачастую можно перезагрузить Nginx, не удаляя соединения, вместо перезапуска. Для этого введите следующее:
sudo systemctl reload nginxПо умолчанию Nginx настроен на автоматический запуск при загрузке сервера. Если вас это не устраивает, вы можете отключить это поведение, выполнив следующую команду:
sudo systemctl disable nginx
Чтобы снова включить запуск службы при загрузке, введите следующее:
sudo systemctl enable nginx
Теперь Nginx должен автоматически перезапускаться при загрузке сервера.
Шаг 5 — Настройка серверных блоков (рекомендуется)
При использовании веб-сервера Nginx серверные блоки (аналогичные виртуальным хостам в Apache) можно использовать для инкапсуляции данных конфигурации и размещения нескольких доменов на одном сервере. Мы настроим домен с именем your_domain , но вам следует заменить его на своё доменное имя. Подробнее о настройке доменных имён в DigitalOcean см. во введении к DigitalOcean DNS.
В Nginx в Ubuntu 18.04 по умолчанию включён блок сервера, настроенный на обслуживание документов вне каталога /var/www/html. Хотя это отлично работает для одного сайта, при размещении нескольких сайтов это может стать проблематичным. Вместо того, чтобы изменять /var/www/html, давайте создадим структуру каталогов в /var/www для нашего сайта your_domain и оставим /var/www/html в качестве каталога по умолчанию для обслуживания на случай, если он не будет соответствовать запросу клиента. Другие сайты
Создайте каталог для your_domain следующим образом, используя флаг -p для создания всех необходимых родительских каталогов:
sudo mkdir -p /var/www/your_domain/html
Затем назначьте владельца каталога с помощью переменной среды $USER:
sudo chown -R $USER:$USER /var/www/your_domain/html
Если вы не меняли значение umask, ваши права root-доступа должны быть правильными, но вы можете убедиться в этом, введя следующее:
sudo chmod -R 755 /var/www/your_domain
Затем создайте пример страницы index.html с помощью nano или вашего любимого редактора:
nano /var/www/your_domain/html/index.html
Внутри добавьте следующий пример HTML:
<html>
<head>
<title>Welcome to your_domain!</title>
</head>
<body>
<h1>Success! The your_domain server block is working!</h1>
</body>
</html>Сохраните и закройте файл после завершения. Если вы используете nano, вы можете выйти, нажав CTRL + X, затем Y и ENTER.
Чтобы Nginx обслуживал этот контент, необходимо создать блок сервера с правильными инструкциями. Вместо прямого изменения файла конфигурации по умолчанию создайте новый файл в /etc/nginx/sites-available/your_domain:
sudo nano /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.com www.your_domain;
location / {
try_files $uri $uri/ =404;
}
}Обратите внимание, что мы обновили конфигурацию корневого каталога, указав новый, а имя_сервера — имя домена. Сохраните и закройте файл после завершения.
Затем включите файл, создав из него ссылку на каталог с включенными сайтами, из которого Nginx будет считывать данные при запуске:
sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
Теперь два блока сервера включены и настроены для ответа на запросы на основе директив listen и server_name (подробнее о том, как Nginx обрабатывает эти директивы, можно прочитать здесь):
- your_domain: Отвечает на запросы your_domain и www.your_domain.
- По умолчанию: отвечает на любой запрос на порту 80, который не соответствует двум другим блокам.
Чтобы избежать потенциальной проблемы с памятью хэш-контейнера, которая может возникнуть при добавлении дополнительных имён серверов, необходимо задать одно значение в файле /etc/nginx/nginx.conf. Откройте файл:
sudo nano /etc/nginx/nginx.conf
Найдите команду server_names_hash_bucket_size и удалите символ #, чтобы раскомментировать строку:
...
http {
...
server_names_hash_bucket_size 64;
...
}
...По завершении сохраните и закройте файл.
Затем проверьте, нет ли синтаксических ошибок в файлах Nginx:
sudo nginx -t
Если проблем нет, перезапустите Nginx, чтобы изменения вступили в силу:
sudo systemctl restart nginx
Теперь Nginx должен обслуживать ваше доменное имя. Вы можете проверить это, перейдя по адресу http://your_domain, где вы увидите что-то вроде следующего:
Шаг 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 не будет использовать файлы конфигурации из этого каталога, если они не связаны с каталогом, поддерживающим сайты. Обычно вся настройка серверных блоков выполняется в этом каталоге, а затем включается путём ссылки на другой каталог.
- /etc/nginx/sites-enabled/: Каталог, в котором хранятся серверные блоки, включённые для каждого сайта. Обычно они создаются путём ссылки на файлы конфигурации в существующем каталоге сайтов.
- /etc/nginx/snippets: Этот каталог содержит фрагменты конфигурации, которые можно включить в другие разделы конфигурации Nginx. Потенциально повторяющиеся разделы конфигурации хорошо подходят для преобразования в фрагменты.
Отчеты сервера
- /var/log/nginx/access.log: Каждый запрос к вашему веб-серверу регистрируется в этом файле журнала, если Nginx не настроен иначе.
- /var/log/nginx/error.log: В этом журнале регистрируются все ошибки Nginx.
Результат
Теперь, когда ваш веб-сервер установлен, у вас есть много вариантов выбора типа контента и технологий, которые вы хотите использовать для создания более насыщенного опыта.











