Вступление
Nginx - один из самых популярных веб-серверов в мире, отвечающий за размещение некоторых из самых крупных и посещающих сайты в Интернете. В большинстве случаев он более дружественен к ресурсам, чем Apache, и его можно использовать в качестве веб-сервера или обратного прокси-сервера.
В этом руководстве мы обсудим, как установить Nginx на ваш сервер Debian 10.
Предпосылки
Прежде чем начать это руководство, у вас должен быть обычный пользователь без полномочий root с настроенными привилегиями sudo на вашем сервере и активный брандмауэр. Вы можете узнать, как их настроить, следуя нашему https://www.digitalocean.com/community/tutorials/initial-server-setup-with-debian-10 руководству по настройке на сервере libeinitial для Debian 10].
Если у вас есть доступная учетная запись, войдите в систему как пользователь без полномочий root, чтобы начать.
Шаг 1 - Установка Nginx
Поскольку Nginx доступен в репозиториях Debian по умолчанию, его можно установить из этих репозиториев с помощью системы упаковки + apt +
.
Поскольку это наше первое взаимодействие с системой упаковки + apt +
в этом сеансе, давайте сначала обновим наш локальный индекс пакетов, чтобы у нас был доступ к самым последним спискам пакетов:
sudo apt update
Теперь мы можем установить + nginx
:
sudo apt install nginx
Когда будет предложено подтвердить установку, нажмите + Enter +
для продолжения. После этого + apt +
установит Nginx и все необходимые зависимости на ваш сервер.
Шаг 2 - Настройка брандмауэра
Перед тестированием Nginx необходимо настроить программное обеспечение брандмауэра, чтобы разрешить доступ к сервису.
Перечислите конфигурации приложения, с которыми + ufw +
знает, как работать, набрав:
sudo ufw app list
Вы должны получить список профилей приложения:
OutputAvailable applications:
...
Nginx Full
Nginx HTTP
Nginx HTTPS
...
Как видите, для Nginx доступны три профиля:
-
* Nginx Full *: этот профиль открывает порт
+ 80 +
(обычный, незашифрованный веб-трафик) и порт+ 443 +
(трафик с шифрованием TLS / SSL) -
* Nginx HTTP *: этот профиль открывает только порт
+ 80 +
(обычный, незашифрованный веб-трафик) -
* Nginx HTTPS *: этот профиль открывает только порт
+ 443 +
(зашифрованный трафик TLS / SSL)
Рекомендуется включить наиболее ограничивающий профиль, который будет по-прежнему разрешать настроенный вами трафик. Поскольку мы еще не настроили SSL для нашего сервера в этом руководстве, нам нужно будет только разрешить трафик для HTTP через порт «+ 80 +».
Вы можете включить это, набрав:
sudo ufw allow 'Nginx HTTP'
Вы можете проверить изменение, набрав:
sudo ufw status
Вы должны увидеть разрешенный 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 +
init, чтобы убедиться, что служба работает, набрав:
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 Wed 2019-07-03 12:52:54 UTC; 4min 23s ago
Docs: man:nginx(8)
Main PID: 3942 (nginx)
Tasks: 3 (limit: 4719)
Memory: 6.1M
CGroup: /system.slice/nginx.service
├─3942 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
├─3943 nginx: worker process
└─3944 nginx: worker process
Как вы можете видеть выше, сервис, кажется, успешно запущен. Однако лучший способ проверить это - запросить страницу у Nginx.
Вы можете получить доступ к целевой странице Nginx по умолчанию, чтобы убедиться, что программное обеспечение работает правильно, перейдя по IP-адресу вашего сервера. Если вы не знаете IP-адрес вашего сервера, попробуйте ввести его в командной строке вашего сервера:
ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
Вы вернетесь на несколько строк. Вы можете попробовать каждый из них в своем веб-браузере, чтобы увидеть, работают ли они.
Когда у вас есть IP-адрес вашего сервера, введите его в адресную строку браузера:
http://
Вы должны увидеть целевую страницу Nginx по умолчанию:
изображение: https: //assets.digitalocean.com/articles/nginx_1604/default_page.png [страница по умолчанию для Nginx]
Эта страница включена в 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 server blocks (аналогично виртуальным хостам в Apache) можно использовать для инкапсуляции деталей конфигурации и размещения нескольких доменов на одном сервере. Мы создадим домен с именем * your_domain *. Чтобы узнать больше о настройке доменного имени с помощью DigitalOcean, посетите наш introduction to DigitalOcean DNS.
В Nginx в Debian 10 по умолчанию включен один серверный блок, который настроен на обслуживание документов вне каталога + / var / www / html +
. Хотя это хорошо работает для одного сайта, он может стать неуправляемым, если вы размещаете несколько сайтов. Вместо того, чтобы модифицировать + / var / www / html +
, давайте создадим структуру каталогов внутри + / var / www +
для веб-сайта * your_domain *, оставив + / var / www / html +
в качестве каталога по умолчанию для обслуживаться, если запрос клиента не совпадает ни с одним другим сайтом.
Создайте каталог для * your_domain * следующим образом, используя флаг + -p +
для создания любых необходимых родительских каталогов:
sudo mkdir -p /var/www//html
Затем назначьте владельца каталога с помощью переменной окружения + $ USER +
, которая должна ссылаться на вашего текущего системного пользователя:
sudo chown -R $USER:$USER /var/www//html
Права доступа к вашему веб-корню должны быть правильными, если вы не изменили значение + umask +
, но вы можете убедиться, набрав:
sudo chmod -R 755 /var/www/
Затем создайте пример страницы + index.html
, используя` + nano + `или ваш любимый редактор:
nano /var/www//html/index.html
Внутри добавьте следующий пример HTML:
/var/www/your_domain/html/index.html
<html>
<head>
<title>Welcome to </title>
</head>
<body>
<h1>Success! Your Nginx server is successfully configured for <em></em>. </h1>
<p>This is a sample page.</p>
</body>
</html>
Сохраните и закройте файл, когда вы закончите.
Чтобы Nginx обслуживал этот контент, нам нужно создать блок сервера с правильными директивами, указывающими на наш пользовательский веб-корень. Вместо непосредственного изменения файла конфигурации по умолчанию, давайте создадим новый в + / etc / nginx / sites-available / +
:
sudo nano /etc/nginx/sites-available/
Вставьте следующий блок конфигурации, который похож на стандартный, но обновлен для нашего нового каталога и имени домена:
/ И т.д. / Nginx / сайты Недоступные / your_domain
server {
listen 80;
listen [::]:80;
root /var/www//html;
index index.html index.htm index.nginx-debian.html;
server_name www.;
location / {
try_files $uri $uri/ =404;
}
}
Обратите внимание, что мы обновили конфигурацию + root +
для нашего нового каталога, а + server_name +
- для нашего доменного имени.
Далее, давайте включим этот блок сервера, создав символическую ссылку на наш пользовательский файл конфигурации в каталоге + sites-enabled +
, который Nginx считывает при запуске:
sudo ln -s /etc/nginx/sites-available/ /etc/nginx/sites-enabled/
Два серверных блока теперь включены и настроены для ответа на запросы на основании их директив + listen +
и + server_name +
(вы можете узнать больше о том, как Nginx обрабатывает эти директивы https://www.digitalocean.com/community/tutorials/ понимание-Nginx-сервер и-местоположение блок выбор-алгоритмы [здесь]):
-
`: будет отвечать на запросы `
и+ www. +
. -
++
: будет отвечать на любые запросы на порт+ 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;
...
}
...
Сохраните и закройте файл, когда вы закончите.
Затем проверьте, чтобы убедиться, что в ваших файлах Nginx нет синтаксических ошибок:
sudo nginx -t
Если проблем нет, вы увидите следующее:
Outputnginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
После прохождения теста конфигурации перезапустите Nginx, чтобы изменения вступили в силу:
sudo systemctl restart nginx
Nginx теперь должен обслуживать ваше доменное имя. Вы можете проверить это, перейдя к + http: // +
, где вы должны увидеть что-то вроде этого:
изображение: https: //assets.digitalocean.com/articles/nginx_debian10/nginx_serverblock.png [блок сервера Nginx]
Шаг 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 будут записываться в этот журнал.
Заключение
Теперь, когда у вас установлен веб-сервер, у вас есть много вариантов для типа контента, который вы можете обслуживать, и технологий, которые вы можете использовать для создания более насыщенного опыта для ваших пользователей.