Введение
Nginx — один из самых популярных веб-серверов в мире, на котором размещаются некоторые из крупнейших и наиболее посещаемых сайтов в интернете. Это легковесный вариант, который можно использовать как веб-сервер или обратный прокси.
В этом руководстве мы рассмотрим установку Nginx на сервер Ubuntu 20.04, настройку брандмауэра, управление процессом Nginx и настройку серверных блоков для размещения более чем одного домена на одном сервере.
Предпосылки
- Перед началом работы с этим руководством необходимо настроить на сервере обычного пользователя без прав root, обладающего правами sudo.
- Купить сервер Ubuntu Щелкните Сделай это.
Шаг 1 — Установка Nginx
Поскольку Nginx доступен в стандартных репозиториях Ubuntu, его можно установить из этих репозиториев с помощью системы управления пакетами apt.
Поскольку это наше первое взаимодействие с системой управления пакетами apt в этом занятии, мы обновим локальный каталог пакетов, чтобы получить доступ к последним спискам пакетов. После этого мы сможем установить nginx:
sudo apt update
sudo apt install nginxПосле принятия процедуры apt установит Nginx и все необходимые зависимости на ваш сервер.
Шаг 2 — Настройка брандмауэра
Перед тестированием Nginx необходимо настроить брандмауэр так, чтобы он разрешил доступ к сервису. После установки Nginx регистрируется как сервис в UFW, что упрощает разрешение доступа к Nginx.
Чтобы получить список конфигураций приложений, с которыми ufw умеет работать, введите:
sudo ufw app list
Вы должны получить список профилей приложений:
Output
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSHКак видно из выходных данных, для Nginx существует три профиля:
- Nginx Full: Этот профиль открывает как порт 80 (обычный, незашифрованный веб-трафик), так и порт 443 (зашифрованный трафик TLS/SSL).
- Nginx HTTP: Этот профиль открывает только порт 80 (обычный, незашифрованный веб-трафик).
- Nginx HTTPS: Этот профиль открывает только порт 443 (для трафика, зашифрованного с помощью TLS/SSL).
Рекомендуется включить наиболее строгий профиль, который, тем не менее, разрешает настроенный вами трафик. На данный момент нам нужно разрешить только трафик на порту 80.
Вы можете включить эту функцию, набрав:
sudo ufw allow 'Nginx HTTP'
Вы можете подтвердить это изменение, набрав:
sudo ufw status
В выходных данных отображается информация о том, какой HTTP-трафик разрешен:
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 — Проверьте свой веб-сервер
В конце процесса установки Ubuntu 20.04 запустит Nginx. Веб-сервер к этому моменту уже должен быть запущен.
Это можно сделать, набрав:
systemctl status nginx
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 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, перейдя по IP-адресу вашего сервера. Если вы не знаете IP-адрес своего сервера, вы можете найти его с помощью инструмента icanhazip.com, который покажет вам ваш публичный IP-адрес в том виде, в котором он был бы получен из другого места в интернете.
curl -4 icanhazip.com
Получив IP-адрес вашего сервера, введите его в адресную строку браузера:
http://your_server_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 — Настройка серверных блоков (рекомендуется)
При использовании веб-сервера Nginx блоки сервера (аналогичные виртуальным хостам в Apache) позволяют инкапсулировать детали конфигурации и размещать более одного домена на одном сервере. Мы настроим домен с именем your_domain, но вам следует заменить его на имя вашего собственного домена.
В Ubuntu 20.04 Nginx по умолчанию имеет блок сервера, настроенный на обслуживание документов вне каталога /var/www/html. Хотя это хорошо работает для одного сайта, это может стать громоздким, если вы размещаете несколько сайтов. Вместо изменения /var/www/html давайте создадим структуру каталогов в /var/www для нашего сайта your_domain и оставим /var/www/html в качестве каталога по умолчанию для обслуживания в случае, если он не соответствует запросу клиента. Другие сайты
Создайте каталог для 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 или вашего любимого редактора:
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;
}
}Обратите внимание, что мы обновили корневую конфигурацию, указав новый каталог, а server_name — имя нашего домена.
Далее, давайте включим этот файл, создав из него ссылку на каталог sites-enabled, из которого Nginx будет считывать данные при запуске:
sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
Теперь два блока сервера включены и настроены для ответа на запросы на основе директив listen и server_name (подробнее о том, как Nginx обрабатывает эти директивы, можно прочитать здесь):
- ваш_домен: Он отвечает на запросы your_domain и www.your_domain.
- По умолчанию: Он отвечает на любой запрос на порту 80, который не соответствует двум другим блокам.
Чтобы избежать потенциальной проблемы с памятью хэш-контейнера, которая может возникнуть при добавлении дополнительных имён серверов, необходимо задать одно значение в файле /etc/nginx/nginx.conf. Откройте файл:
sudo nano /etc/nginx/nginx.conf
Найдите команду server_names_hash_bucket_size и раскомментируйте строку, удалив символ #. Если вы используете nano, вы можете быстро найти нужные слова в файле, нажав CTRL и w.
...
http {
...
server_names_hash_bucket_size 64;
...
}
...По завершении сохраните и закройте файл.
Затем проверьте, нет ли синтаксических ошибок в файлах Nginx:
sudo nginx -t
Если проблем нет, перезапустите Nginx, чтобы изменения вступили в силу:
sudo systemctl restart nginx
Теперь Nginx должен обслуживать ваше доменное имя. Вы можете проверить это, перейдя по адресу http://your_domain, где вы должны увидеть что-то подобное:
Шаг 6 — Ознакомьтесь с важными файлами и каталогами Nginx
Теперь, когда вы знаете, как управлять самой службой Nginx, вам следует уделить несколько минут ознакомлению с несколькими важными каталогами и файлами.
Содержание
- /var/www/html: Фактический веб-контент, который по умолчанию состоит только из стандартной страницы Nginx, которую вы видели ранее, отображается вне каталога /var/www/html. Это можно изменить, отредактировав конфигурационные файлы Nginx.
Конфигурация сервера
- /etc/nginx: Каталог конфигурации Nginx. Все файлы конфигурации Nginx находятся здесь.
- /etc/nginx/nginx.conf: Основной конфигурационный файл Nginx. Его можно изменить для внесения изменений в глобальную конфигурацию Nginx.
- /etc/nginx/sites-available/: Каталог, где можно хранить серверные блоки для каждого сайта. Nginx не будет использовать файлы конфигурации из этого каталога, если они не связаны с каталогом sites-enabled. Как правило, вся конфигурация серверных блоков выполняется в этом каталоге, а затем активируется путем создания ссылки на другой каталог.
- /etc/nginx/sites-enabled/: Каталог, в котором хранятся активные серверные блоки для каждого сайта. Как правило, они создаются путем создания ссылок на конфигурационные файлы в существующем каталоге сайта.
- /etc/nginx/snippets: В этом каталоге содержатся фрагменты конфигурации, которые можно включить в другие разделы конфигурации Nginx. Потенциально повторяющиеся разделы конфигурации являются хорошими кандидатами для рефакторинга в отдельные фрагменты.
Отчеты сервера
- /var/log/nginx/access.log: В этот файл журнала записывается каждый запрос к вашему веб-серверу, если иное не указано в настройках Nginx.
- /var/log/nginx/error.log: Все ошибки Nginx записываются в этот журнал.
Результат
Теперь, когда ваш веб-сервер установлен, у вас есть много вариантов выбора типа контента и технологий, которые вы хотите использовать для создания более насыщенного опыта.











