Введение
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:
Если она высветилась, значит, сервер работает правильно.
Шаг 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!”.
Если вы увидели эту надпись, значит, все настроено и работает правильно.
Комментарии