Nginx — один из наиболее широко используемых веб-серверов по всему миру, который служит для хостинга веб-сайтов. По сути, это самый простой инструмент, который может работать как обратный прокси-сервер или веб-сервер. В этом руководстве мы рассмотрим, как установить Nginx. Помимо процесса установки Nginx Ubuntu server 20.04 изучим настройку брандмауэра, создание серверных блоков и т.д.
- Предварительные условия
- Установка Nginx
- Настройка брандмауэра
- Проверка веб-сервера
- Управление процессом Nginx
- Настройка блоков сервера (опционально)
- Важные файлы и каталоги Nginx
- Заключение
Предварительные условия
Перед началом работы вам нужно будет создать обычную пользовательскую учетную запись с ограниченными правами (root) и привилегиями администратора (sudo). Также, перед началом шагов, указанных в данной статье, вам, возможно, потребуется зарегистрировать доменное имя для вашего сайта. Затем войдите в систему с использованием вашего аккаунта, если доступна обычная, не обладающая административными привилегиями учетная запись. После этого можно выполнить Ubuntu Nginx install.
Установка Nginx
Он уже находится в репозиториях Ubuntu, поэтому воспользуйтесь командой apt install Nginx. Но прежде чем сделать это, чтобы обновить ваш список пакетов. После того, как вы сделаете это, начинается установка Nginx Ubuntu.
sudo apt update
sudo apt install nginx
Все нужные элементы будут записаны на сервер Nginx Ubuntu.
Настройка брандмауэра
Установка и настройка Nginx Ubuntu должны быть выполнены правильно, поэтому важно четко придерживаться данному алгоритму.
Прежде чем тестировать сервис Nginx, необходимо разрешить доступ к нему через программный брандмауэр. После завершения установки Nginx автоматически добавляется в список сервисов брандмауэра ufw
, упрощая тем самым процесс предоставления доступа к нему.
Набрав sudo ufw app list
, можно получить список доступных конфигураций ufwс
. Вот список профилей:
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSH
Доступны три профиля:
- Nginx Full открывает как порт 80 (для обычного незашифрованного веб-трафика), так и порт 443 (для зашифрованного трафика TLS/SSL).
- Nginx HTTP открывает только порт 80 для обычного незашифрованного веб-трафика.
- Nginx HTTPS открывает только порт 443 для зашифрованного трафика TLS/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 Ubuntu.
Для проверки работоспособности используйте:
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 2020-04-20 16:08:19 UTC; 3 days ago
Docs: man:nginx(8)
Main PID: 2369 (nginx)
Tasks: 2 (limit: 1153)
Memory: 3.5M
CGroup: /system.slice/nginx.service
├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
└─2380 nginx: worker process
Рекомендуется для проверки работоспособности системы обратиться к веб-серверу Nginx. Для этого достаточно открыть страницу через данный сервер.
Управление процессом 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 Ubuntu, можно размещать на одном сервере несколько доменов.
Настройка блоков сервера (опционально)
Это необходимо для инкапсулирования конфигураций при работе с несколькими сайтами на одном сервере.
Допустим, используем домен под названием your_domain. Согласно базовым настройкам, в Ubuntu 20.04 один серверный блок Nginx. Он настроен на обработку файлов из директории /var/www/html, что подходит для одного вебсайта, но может оказаться недостаточным при работе с несколькими веб-проектами.
Рекомендуется создать каталог /var/www для домена your_domain и оставить /var/www/html как каталог по умолчанию. Если конкретный запрос не соответствует другим веб-сайтам, то будет использоваться данный каталог.
Создайте каталог для вашего домена, используя флаг -p
для всех необходимых вышестоящих директорий:
sudo mkdir -p /var/www/your_domain/html
Затем назначьте владельца каталога с помощью $USER
:
sudo chown -R $USER:$USER /var/www/your_domain/html
Если вы не меняли значение umask, проверьте, правильно ли установлены права доступа к корневой директории. Чтобы предоставить возможность чтения, записи и запуска владельцу и только чтения другим лицам, введите следующую команду:
curl -4 icanhazip.com
Создайте образец index.html, используя любой редактор:
sudo 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>
Сохраните и закройте этот файл, нажмите 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 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/
Важно. Nginx использует стандартную технику, известную как символические ссылки, чтобы определить, какие серверные блоки активированы. Создание символьной ссылки аналогично созданию ярлыка на вашем жестком диске. Поэтому вы можете удалить ярлык из папки sites-enabled, сохранив при этом сам серверный блок в папке sites-available, на случай если вы захотите его вновь активировать.
Теперь серверные блоки настроены на обработку запросов на основе директив listen и server_name.
your_domain: будет отвечать на запросы для your_domain и www.your_domain.
default: будет отвечать на любые запросы на порту 80, которые не соответствуют двум другим блокам.
Во избежание проблем с памятью хеш-корзины, которая иногда возникает при добавлении серверных имен, стоит сделать некоторые изменения в /etc/nginx/nginx.conf. Откройте файл:
sudo nano /etc/nginx/nginx.conf
Найдите server_names_hash_bucket_size директиву и удалите #
символ, чтобы работать со строкой.
Важно. Комментирование строк кода (обычно с использованием символа #
в начале строки) также является хорошим способом их отключения и при этом не требует фактического удаления. Во многих файлах конфигурации имеются параметры, которые закомментированы. Их можно включить или выключить, просто переместив их между активной и документационной частями кода.
/etc/nginx/nginx.conf
...
http {
...
server_names_hash_bucket_size 64;
...
}
...
Закончив, сохраните изменения. Далее стоит проверить, есть ли в коде синтаксические ошибки:
sudo nginx -t
Если все хорошо, то сделайте перезапуск системы.
sudo systemctl restart nginx
Важные файлы и каталоги Nginx
Зная, как управлять самим сервисом Nginx, стоит разобраться в некоторых дополнительных настройках.
Содержание
- /var/www/html: контент, который по умолчанию обслуживается из каталога /var/www/html. Эти настройки легко поменять через config файл Nginx.
Конфигурация сервера
- /etc/nginx — каталог конфигурации Nginx, в котором находятся все файлы этой конфигурации.
- /etc/nginx/nginx.conf — основной файл настройки Nginx.
- /etc/nginx/sites-available/ — каталог, где могут храниться серверные блоки для каждого веб-сайта. Nginx не использует конфигурационные файлы из этого каталога, если они не указаны в каталоге sites-enabled. Как правило, вся конфигурация серверных блоков выполняется в этом каталоге и затем активируется, если есть ссылка на другой каталог.
- /etc/nginx/sites-enabled/ — каталог для хранения активированных серверных блоков для каждого веб-сайта. Они генерируются путем создания ссылки на конфигурационные файлы в каталоге sites-available.
- /etc/nginx/snippets/ — этот каталог содержит конфигурационные фрагменты, которые могут быть включены в другие места конфигурации Nginx.
Журналы сервера
- /var/log/nginx/access.log: каждый запрос к веб-серверу записывается в этот файл журнала, если Nginx не настроен на иное действие.
- /var/log/nginx/error.log: любые ошибки Nginx будут записываться в этот журнал.
Заключение
На этом процесс установки и настройки закончился. Есть возможность использовать сервер по назначению, исходя из текущих бизнес задач.
Хотите узнавать больше о технологиях и наших облачных продуктах? Подписывайтесь на нашу рассылку и следите за новостями: Телеграм и Вконтакте.