Anonimus
Anonimus / Статьи

Введение
Nginx является одним из самых популярных веб-серверов в мире и отвечает за хостинг некоторых крупных и посещаемых ресурсов сети. По многим параметрам nginx менее затратный с точки зрения ресурсов сервер, чем Apache, и его можно использовать как веб-сервер либо обратный прокси.

Из данного руководства вы узнаете о том, как правильно установить nginx на Ubuntu 18.04.

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

Как только вы создадите такой аккаунт, авторизуйтесь в качестве этого пользователя перед выполнением следующих шагов.

Шаг 1: установка nginx
Так как nginx по умолчанию доступен в репозиториях Ubuntu, его можно установить прямо из них при помощи пакетного менеджера apt.

Но так как в этой сессии вы будете первый раз обращаться к пакетному менеджеру, то сначала необходимо обновить локальный индекс пакетов. Это позволит получить доступ к самым актуальным на данный момент спискам пакетов. И только после этого нужно перейти к установке nginx:

$ sudo apt update

$ sudo apt install nginx
После выполнения команды пакетный менеджер установит nginx и все необходимые зависимости на ваш сервер.

Шаг 2: настройка фаервола
Перед тестированием nginx необходимо настроить фаервол для того, чтобы дать доступ сервису. Nginx регистрирует себя как сервис с утилитой ufw - благодаря этому дать доступ nginx довольно легко.

Введите команду ниже для того, чтобы увидеть конфигурации приложений, с которыми может работать ufw.

$ sudo ufw app list
Вам высветится вот такой список:

Available applications:

Nginx Full

Nginx HTTP

Nginx HTTPS

OpenSSH
То есть для nginx доступы 3 профиля:

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-трафик разрешен:

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. Веб-сервер уже должен работать.

Это можно проверить следующей командой:

$ 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 Fri 2018-04-20 16:08:19 UTC; 3 days ago

Docs: man:nginx(8)

Main PID: 2369 (nginx)

Tasks: 2 (limit: 1153)

CGroup: /system.slice/nginx.service

├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;

└─2380 nginx: worker process
Как можно увидеть выше, служба успешно запущена. Однако лучший способ проверить - это запросить страницу.

Чтобы убедиться в том, что все работает правильно, нужно посмотреть, отобразится ли начальная страница nginx, если ввести в браузере IP-адрес вашего сервера.

Если вы его не знаете, то есть следующие варианты выяснить:

1.Введите в командной строке:

$ ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
Вы увидите несколько строк - попробуйте каждую из них в браузере.

2. Можно также получить публичный IP-адрес своего сервера:

$ curl -4 icanhazip.com
После того, как IP-адрес получен, введите его в адресную строку браузера.

http://ip-адрес сервера

Должна загрузиться приветственная страница nginx:

Как установить NGINX на Ubuntu 18.04, изображение №2
Если она высветилась, значит, сервер работает правильно.

Шаг 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
Шаг 5: настройка серверных блоков
Если вам нужно, чтобы сервер обслуживал больше одного домена, то используйте серверные блоки (то есть блоки server). Эти блоки похожи на виртуальные хосты в Apache. В данном руководстве речь будет идти о домене test.ru, вам нужно вписать вместо него ваш собственный домен.

По умолчанию у nginx на Ubuntu 18.04 включен лишь один серверный блок по умолчанию. Он настроен обслуживать файлы в директории /var/www/html. Это хорошо работает для отдельного сайта, но абсолютно неудобно, если нужно разместить несколько сайтов.

Для начала создайте директорию внутри /var/www для сайта test.ru:

$ sudo mkdir -p /var/www/test.ru/html
/var/www/html останется как директория по умолчанию и будет использоваться в тех случаях, когда клиентский запрос не совпадает ни с одним другим сайтом.

Теперь нужно указать права:

$ sudo chown -R $USER:$USER /var/www/test.ru/html

$ sudo chmod -R 755 /var/www/test.ru
Далее создайте пример страницы index.html, используя nano или любой другой редактор:

$ nano /var/www/test.ru/html/index.html
Скопируйте в файл код ниже:

<html>

<head>

<title>Welcome to Test.ru!</title>

</head>

<body>

<h1>Success! The test.ru server block is working!</h1>

</body>

</html>
Сохраните и закройте файл.

Для того, чтобы nginx правильно отображал информацию, нужно создать серверный блок с нужными директивами. Вместо редактирования стандартного конфигурационного файла создайте новый в /etc/nginx/sites-available/test.ru:

$ sudo nano /etc/nginx/sites-available/test.ru
Скопируйте туда следующий конфигурационный блок. Он похож на тот, который идет по умолчанию, однако имеет новую директорию (root) и доменное имя (server_name).

server {

listen 80;

listen [::]:80;

root /var/www/test.ru/html;

index index.html index.htm index.nginx-debian.html;

server_name test.ru www.test.ru;

location / {

try_files $uri $uri/ =404;

}

}
Теперь нужно сделать файл доступным, создав ссылку на него в директории sites-enabled:

$ sudo ln -s /etc/nginx/sites-available/test.ru /etc/nginx/sites-enabled/
Теперь два серверных блока включены, настроены и будут использоваться в зависимости от их директив listen и server_name:

test.ru: отвечает на запросы test.ru и www.test.ru.
default: отвечает на все остальные запросы порта 80, которые не совпадают с двумя другими блоками.
Для того, чтобы избежать возможной проблемы с хэшем из-за дополнительных серверных имен, необходимо изменить настройки в конфигурационном файле. Откройте его:

$ 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 должен обслуживать ваше доменное имя. Введите его в браузере. Вы должны увидеть надпись “Success! The test.ru server block is working!”.

Если вы увидели эту надпись, значит, все настроено и работает правильно.
17:04
54
0