Table of Contents
Введение
Nginx — один из самых популярных в мире веб-серверов, на базе которого размещены некоторые из самых крупных сайтов интернета с огромным трафиком. Обычно он использует ресурсы эффективнее, чем Apache, и может использоваться как веб-сервер или обратный прокси-сервер.
В этом обучающем модуле мы расскажем, как установить Nginx на сервере Ubuntu 18.04. Более подробную версию этого обучающего модуля можно найти в документе Установка Nginx в Ubuntu 18.04.
Предварительные требования
Для прохождения этого обучающего модуля вам потребуется следующее:
- Один сервер Ubuntu 18.04 и обычный пользователь без прав root с привилегиями sudo. Также вам потребуется включить базовый брандмауэр, чтобы заблокировать все порты, кроме необходимых. Вы научитесь настраивать учетную запись обычного пользователя и брандмауэр, следуя указаниям руководства Начальная настройка сервера Ubuntu 18.04.
Создав учетную запись, войдите в систему как пользователь без привилегий root.
Шаг 1 – Установка Nginx
Поскольку Nginx доступен в хранилищах Ubuntu по умолчанию, вы можете установить его с помощью системы пакетов apt.
Обновите локальный индекс пакетов:
sudo apt update
Установите Nginx:
sudo apt install nginx
Шаг 2 — Настройка брандмауэра
Если вы выполнили указания обучающего модуля по предварительной настройке сервера, вы уже активировали брандмауэр UFW. Проверьте доступные профили приложений ufw с помощью следующей команды:
sudo ufw app list
[secondary_label Output]
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
Мы активируем профиль с наибольшими ограничениями, который будет разрешать заданный трафик, а именно трафик на порту 80:
sudo ufw allow 'Nginx HTTP'
Проверьте изменения:
sudo ufw status
[secondary_label 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 – Проверка веб-сервера
Используйте команду systemd init system, чтобы проверить работу службы:
systemctl status nginx
[secondary_label 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 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-адрес:
http://<^>your_server_ip<^>
Вы увидите начальную страницу Nginx по умолчанию:
Шаг 4 — Настройка блоков сервера (рекомендуется)
При использовании веб-сервера Nginx вы можете использовать _блоки сервера_ (аналогичные виртуальным хостам в Apache) для инкапсуляции данных конфигурации и размещения на одном сервере нескольких доменов. Мы создадим домен example.com, но вы должны заменить это имя собственным доменным именем. Чтобы узнать больше о настройке доменного имени с помощью the cloud provider, пройдите наш обучающий модуль Введение в DNS hosting.
Создайте каталог для <^>example.com<^>, используя опцию -p для создания необходимых родительских каталогов:
sudo mkdir -p /var/www/<^>example.com<^>/html
Назначьте владельца каталога:
sudo chown -R $USER:$USER /var/www/<^>example.com<^>/html
Разрешения корневых каталогов веб-сервера должны быть правильными, если вы не изменяли значение umask. Тем не менее, вы можете проверить это с помощью следующей команды:
sudo chmod -R 755 /var/www/<^>example.com<^>
Создайте в качестве примера страницу index.html, используя nano или свой любимый редактор:
nano /var/www/<^>example.com<^>/html/index.html
Добавьте в страницу следующий образец кода HTML:
[label /var/www/example.com/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>
Сохраните файл и закройте его после завершения.
Создайте новый серверный блок в /etc/nginx/sites-available/<^>example.com<^>:
sudo nano /etc/nginx/sites-available/<^>example.com<^>
Вставьте следующий блок конфигурации, обновленный с учетом новых имен каталога и домена:
[label /etc/nginx/sites-available/example.com]
server {
listen 80;
listen [::]:80;
root /var/www/<^>example.com<^>/html;
index index.html index.htm index.nginx-debian.html;
server_name <^>example.com<^> www.<^>example.com<^>;
location / {
try_files $uri $uri/ =404;
}
}
Сохраните файл и закройте его после завершения.
Активируйте файл, создав ссылку от него в каталог sites-enabled:
sudo ln -s /etc/nginx/sites-available/<^>example.com<^> /etc/nginx/sites-enabled/
Теперь два серверных блока активированы и настроены отвечать на запросы на базе директив listen и server_name:
example.com: будет отвечать на запросыexample.comиwww.example.com.
default: будет отвечать на любые запросы порта80, не соответствующие двум другим блокам.
Чтобы избежать возможной проблемы с хэшированием памяти при добавлении дополнительных имен серверов, необходимо изменить одно значение в файле /etc/nginx/nginx.conf. Откройте файл:
sudo nano /etc/nginx/nginx.conf
Найдите директиву server_names_hash_bucket_size и удалите символ #, чтобы убрать режим комментариев для строки:
[label /etc/nginx/nginx.conf]
...
http {
...
server_names_hash_bucket_size 64;
...
}
...
Проверьте ошибки синтаксиса:
sudo nginx -t
Перезапустите Nginx, чтобы активировать изменения:
sudo systemctl restart nginx
Теперь Nginx должен обслуживать ваше доменное имя. Вы можете проверить это, открыв в браузере адрес http://<^>example.com<^>, после чего должны увидеть примерно следующее:
Заключение
Теперь вы установили веб-сервер и у вас есть богатые возможности выбора типа обслуживаемого контента и технологий для расширения возможностей пользователя.
Если вы хотите развернуть более сложный набор обслуживания приложений, ознакомьтесь с этой статьей о настройке набора LEMP в Ubuntu 18.04.