Установка и настройка NGINX на Debian 10

Nginx – это один из самых популярных веб-серверов в мире, позволяющий размещать очень большие сайты с высоким трафиком. Он, как правило, более экономен в плане потребления ресурсов, чем Apache. Также его можно использовать в качестве обратного прокси-сервера и почтового прокси-сервера.

Установка Nginx

Пакет Nginx можно найти в стандартном репозитории Debian.

Поскольку это ваше первое взаимодействие с системой пакетирования apt в текущей сессии, нужно обновить индекс пакетов. После этого можно установить Nginx.

# обновляем пакеты Debian
sudo apt update
# ставим nginx
sudo apt install nginx

Чтобы подтвердить установку, нажмите Enter и пакетный менеджер установит Nginx и все его зависимости.

Настройка брандмауэра

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

Откройте список профилей ufw:

sudo ufw app list
Available applications:
...
Nginx Full
Nginx HTTP
Nginx HTTPS
...

В списке зарегистрировано три профиля Nginx:

  • Nginx Full: открывает порт 80 (незашифрованный сетевой трафик) и 443 (зашифрованный трафик TLS/SSL).
  • Nginx HTTP: для незашифрованного трафика HTTP на порт 80.
  • Nginx HTTPS: для зашифрованного трафика TLS/SSL на порт 443.

Рекомендуется выбрать наиболее строгий профиль сервиса. Однако, поскольку на сервере ещё не настроен SSL, мы можем настроить только порт 80.

Чтобы включить профиль, введите:

sudo ufw allow 'Nginx HTTP'

Убедитесь в том, что профиль включился:

sudo ufw status

Команда должна показать, что трафик HTTP разрешен:

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

Тестирование веб-сервера

После установки Nginx запустится автоматически.

Чтобы убедиться в том, что Nginx запустился, запросите его состояние в системе инициализации systemd.

systemctl status nginx
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 Wed 2019-07-03 12:52:54 UTC; 4min 23s ago
Docs: man:nginx(8)
Main PID: 3942 (nginx)
Tasks: 3 (limit: 4719)
Memory: 6.1M
CGroup: /system.slice/nginx.service
├─3942 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
├─3943 nginx: worker process
└─3944 nginx: worker process

Как видите, сервис успешно запущен.

Также можно посетить стандартную посадочную страницу Nginx. Она доступна в браузере по домену или IP-адресу.

Если вы не знаете своего IP-адреса, вы можете узнать его с помощью командной строки:

ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'

Команда вернёт несколько строк. Проверьте каждый полученный адрес в браузере.

Узнав свой IP-адрес, введите его в браузер, чтобы убедиться, что веб-сервер работает должным образом.

http://your_server_ip

На экране должна появиться стандартная страница Nginx:

Welcome to nginx!
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.

Управление сервером Nginx

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

Остановка

sudo systemctl stop nginx

Запуск

sudo systemctl start nginx

Перезапуск

sudo systemctl restart nginx

Обновить настройки Nginx, не сбрасывая соединения

sudo systemctl reload nginx

Отключение автоматического запуска после перезагрузки сервера.

sudo systemctl disable nginx

Чтобы возобновить автозапуск сервиса

sudo systemctl enable nginx

Настройка виртуальных хостов

На веб-сервере Nginx можно использовать виртуальные хосты для изоляции настроек и размещения нескольких доменов на одном сервере.

В Debian 10 Nginx по умолчанию предоставляет один включенный виртуальный хост, который обслуживает каталог /var/www/html. Этого хватит для обслуживания одного сайта, но если вы хотите разместить несколько сайтов, вам нужно создать новые виртуальные хосты.

Создайте структуру каталогов в  /var/www для сайта example.com, а /var/www/html оставьте как каталог по умолчанию, который будет обслуживаться, если запрос клиента не соответствует другим сайтам.

Создайте каталог с именем example.com(your_domain), используя опцию -p для создания всех необходимых родительских каталогов:

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

Затем установите права на каталог с помощью переменной $USER:

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

Права должны быть установлены правильно, если вы не меняли umask, меняем права, если неверные:

sudo chmod -R 755 /var/www/your_domain

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

nano /var/www/example.com/html/index.html

Вставляем в index.html содержимое:

<html>
<head>
<title>Welcome to Example.com!</title>
</head>
<body>
<h1>Success! The example.com server block is working!</h1>
</body>
</html>

Сохраните и закройте файл.

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

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 www.your_domain;
location / {
try_files $uri $uri/ =404;
}
}

Обратите внимание, что root содержит путь к новому каталогу, а server_name – новый домен.

Сохраните и закройте файл.

Включите файл, создав симлинк в каталоге sites-enabled:

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

Теперь у вас есть два виртуальных хоста, которые будут обслуживать запросы клиентов на основе директив listen и server_name:

  • your_domain : будет обслуживать запросы для www.your_domain и your_domain.
  • default будет отвечать на запросы по порту 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: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Перезапустите Nginx, чтобы новые параметры вступили в силу:

sudo systemctl restart nginx

Теперь Nginx обслуживает домен вашего сайта. Чтобы убедиться в этом, откройте ссылку http://your_domain в браузере.

Success!  The example.com server block is working!

Важные файлы и каталоги Nginx

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

Контент

  • /var/www/htm: содержит текущий контент сайта. По умолчанию в нём находится только стандартная посадочная страница, которую вы уже видели. Этот каталог можно изменить в конфигурационном файле Nginx.

Настройки сервера

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

Логи

  • /var/log/nginx/access.log: регистрирует все запросы, полученные веб-сервером Nginx (если не настроено другое поведение).
  • /var/log/nginx/error.log: хранит все сообщения об ошибках Nginx.

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

Nginx
04.03.2020
1 ответ
авторизуйтесь чтобы ответить