Введение
Nginx – это бесплатный и открытый веб-сервер, используемый для размещения веб-сайтов и приложений любого размера. Программное обеспечение известно своим низким влиянием на ресурсы памяти, высокой масштабируемостью и модульной, событийно-ориентированной архитектурой, которая обеспечивает безопасную и предсказуемую производительность. Более чем просто веб-сервер, Nginx также работает как балансировщик нагрузки, HTTP-кэш и обратный прокси.
В этом руководстве вы установите Nginx на ваш сервер Debian 10.
Предварительные требования
Перед тем как начать это руководство, у вас должен быть обычный, не root-пользователь с настроенными привилегиями sudo на вашем сервере. Также у вас должен быть активный брандмауэр. Вы можете узнать, как это сделать, следуя нашему руководству по начальной настройке сервера для Debian 10.
Шаг 1 – Установка Nginx
Nginx доступен в стандартных репозиториях программного обеспечения Debian, что позволяет устанавливать его с помощью обычных инструментов управления пакетами.
Сначала обновите локальный индекс пакетов, чтобы отразить последние изменения в исходных данных:
Затем установите пакет nginx
:
Подтвердите установку, введите Y
, затем нажмите Enter
, чтобы продолжить. apt
затем установит Nginx и все необходимые зависимости на ваш сервер.
Шаг 2 – Настройка брандмауэра
Перед тестированием Nginx необходимо изменить настройки брандмауэра, чтобы разрешить доступ снаружи к стандартным веб-портам. Предполагая, что вы следовали инструкциям в предварительных требованиях, у вас должен быть настроен брандмауэр UFW, ограничивающий доступ к вашему серверу.
Во время установки Nginx регистрирует себя в UFW, чтобы предоставить несколько профилей приложений, которые можно использовать для включения или отключения доступа к Nginx через брандмауэр.
Выведите список профилей приложений ufw
, набрав:
Вы должны получить список профилей приложений:
OutputAvailable applications:
...
Nginx Full
Nginx HTTP
Nginx HTTPS
...
Как видите, доступны три профиля для Nginx:
- Nginx Full: Этот профиль открывает как порт
80
(нормальный, нешифрованный веб-трафик), так и порт443
(шифрованный трафик TLS/SSL) - Nginx HTTP: Этот профиль открывает только порт
80
(нормальный, нешифрованный веб-трафик) - Nginx HTTPS: Этот профиль открывает только порт
443
(зашифрованный трафик TLS/SSL)
Рекомендуется включить самый ограничительный профиль, который все еще позволит настраиваемый трафик. Поскольку вы еще не настроили TLS/SSL для вашего сервера в этом руководстве, вам потребуется разрешить только трафик для HTTP на порту 80
.
Вы можете включить это, набрав:
Вы можете проверить изменение, набрав:
Что появится в выводе – это разрешенный трафик HTTP:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)
Шаг 3 – Проверка вашего веб-сервера
В конце процесса установки Debian 10 запускает Nginx. Веб-сервер должен уже быть запущен и работать.
Вы можете проверить с помощью инициализационной системы systemd
, чтобы убедиться, что служба работает, набрав:
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 Tue 2022-06-28 18:42:58 UTC; 49s ago
Docs: man:nginx(8)
Main PID: 2729 (nginx)
Tasks: 2 (limit: 1167)
Memory: 7.2M
CGroup: /system.slice/nginx.service
├─2729 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
└─2730 nginx: worker process
Этот вывод показывает, что служба успешно запущена. Однако лучший способ проверить это – фактически запросить страницу у Nginx.
Вы можете получить доступ к стандартной стартовой странице Nginx, чтобы подтвердить, что программное обеспечение работает правильно, перейдя по IP-адресу вашего сервера. Если вы не знаете IP-адрес вашего сервера, вы можете набрать это в командной строке сервера:
Вы получите несколько строк. Вы можете попробовать каждую из них в своем веб-браузере, чтобы увидеть, работают ли они.
Когда у вас есть IP-адрес вашего сервера, введите его в адресную строку вашего браузера:
http://your_server_ip
Стандартная стартовая страница Nginx должна отобразиться в вашем веб-браузере:
Эта страница включена в Nginx, чтобы показать вам, что сервер работает правильно.
Шаг 4 – Управление процессом Nginx
Теперь, когда ваш веб-сервер запущен и работает, вы можете ознакомиться с некоторыми основными командами управления.
Чтобы остановить ваш веб-сервер, введите:
Чтобы запустить веб-сервер, когда он остановлен, введите:
Чтобы остановить, а затем снова запустить службу, введите:
Если вы вносите изменения в конфигурацию, Nginx часто может быть перезагружен без разрыва соединений. Для этого введите:
По умолчанию Nginx настроен на автоматический запуск при загрузке сервера. Если это не то, что вы хотите, вы можете отключить это поведение, введя:
Чтобы снова включить службу для запуска при загрузке, вы можете ввести:
Шаг 5 – Настройка блоков сервера (Необязательно)
При использовании веб-сервера Nginx блоки сервера (аналогичные виртуальным хостам в Apache) могут использоваться для инкапсуляции деталей конфигурации и размещения нескольких доменов на одном сервере. В следующих командах замените your_domain
на свое собственное доменное имя. Чтобы узнать больше о настройке доменного имени с DigitalOcean, ознакомьтесь с нашим введением в DigitalOcean DNS.
В Debian 10 Nginx имеет один блок сервера, включенный по умолчанию, который настроен на обслуживание документов из каталога /var/www/html
. Хотя это хорошо работает для одного сайта, это может стать неуправляемым, если вы хостите несколько сайтов. Вместо изменения /var/www/html
создайте структуру каталогов внутри /var/www
для веб-сайта your_domain
, оставив /var/www/html
на месте как каталог по умолчанию, который будет обслуживаться, если запрос клиента не соответствует ни одному другому сайту.
Создайте каталог для your_domain
следующим образом, используя флаг -p
для создания необходимых родительских каталогов:
Затем назначьте владельца каталога с помощью переменной окружения $USER
, которая должна ссылаться на вашего текущего пользователя системы:
Права вашего корневого каталога веб-сайта должны быть правильными, если вы не изменяли значение umask
, но вы можете убедиться в этом, набрав:
Затем создайте образец страницы index.html
с помощью nano
или вашего предпочтительного текстового редактора:
Внутри добавьте следующий образец HTML:
<html>
<head>
<title>Welcome to your_domain</title>
</head>
<body>
<h1>Success! Your Nginx server is successfully configured for <em>your_domain</em>. </h1>
<p>This is a sample page.</p>
</body>
</html>
Сохраните и закройте файл, когда закончите. В nano
вы можете сделать это, нажав CTRL + X
, затем Y
, а затем ENTER
.
Чтобы Nginx мог обслуживать этот контент, вы должны создать блок сервера с правильными директивами, указывающими на ваш корневой веб-каталог. Вместо прямого изменения файла конфигурации по умолчанию создайте новый в /etc/nginx/sites-available/ваш_домен
:
Добавьте следующий блок конфигурации, аналогичный по устройству по умолчанию, но обновленный для вашего нового каталога и имени домена:
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
, который Nginx читает при запуске:
Теперь у вашего сервера есть два активированных блока сервера и сконфигурированы для ответа на запросы на основе их директив listen
и server_name
(вы можете узнать больше о том, как Nginx обрабатывает эти директивы здесь):
ваш_домен
: Будет отвечать на запросы дляваш_домен
иwww.ваш_домен
.default
: Будет отвечать на любые запросы на порт80
, которые не соответствуют другим двум блокам.
Чтобы избежать возможной проблемы с памятью хэш-бакета, которая может возникнуть при добавлении дополнительных имен серверов в вашу конфигурацию, необходимо отрегулировать одно значение в файле /etc/nginx/nginx.conf
. Откройте файл:
Найдите директиву server_names_hash_bucket_size
и удалите символ #
, чтобы раскомментировать строку:
...
http {
...
server_names_hash_bucket_size 64;
...
}
...
Сохраните и закройте файл после завершения.
Затем протестируйте, чтобы убедиться, что нет синтаксических ошибок в ваших файлах Nginx:
Если проблем нет, то вывод будет следующим:
Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
После успешного прохождения теста конфигурации перезапустите Nginx, чтобы активировать внесенные изменения:
Теперь Nginx должен обслуживать ваше доменное имя. Вы можете проверить это, перейдя по адресу http://ваш_домен
. Здесь должен отобразиться созданный вами пользовательский HTML в папке /var/www/ваш_домен/html/index.html
:
Шаг 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/
: Каталог, в котором хранятся активированные серверные блоки для каждого сайта. Обычно они создаются путем создания ссылок на файлы конфигурации, найденные в каталогеsites-available
./etc/nginx/snippets
: Этот каталог содержит фрагменты конфигурации, которые можно включить в другие части конфигурации Nginx. Потенциально повторяющиеся сегменты конфигурации хорошо подходят для рефакторинга в виде фрагментов.
Журналы сервера
/var/log/nginx/access.log
: Каждый запрос к вашему веб-серверу записывается в этот файл журнала, если Nginx не настроен иначе./var/log/nginx/error.log
: Любые ошибки Nginx будут записаны в этот журнал.
Заключение
Теперь, когда у вас установлен веб-сервер, у вас есть множество вариантов для типа контента, который вы можете обслуживать, и технологий, которые вы можете использовать для создания более насыщенного опыта для ваших пользователей.
Source:
https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-debian-10