Как установить и настроить веб-сервер Nginx на Cloud VPS: Пошаговая инструкция
В этой статье мы подробно рассмотрим процесс установки и настройки веб-сервера Nginx на облачном VPS. Мы пройдём все этапы, начиная от подключения к серверу и обновления системы, до настройки виртуальных хостов и обеспечения безопасности. Независимо от того, являетесь ли вы начинающим системным администратором или опытным разработчиком, эта инструкция поможет вам быстро и эффективно настроить ваш веб-сервер для оптимальной работы.
В рамках данной статьи будут рассмотрены следующие темы:
- Подготовка сервера к установке Nginx
- Установка Nginx на VPS
- Основная настройка Nginx и виртуальные хосты
- Обеспечение безопасности Nginx
- Проверка и отладка работы Nginx
Подготовка сервера к установке Nginx

Прежде чем приступать к установке Nginx, необходимо убедиться, что ваш сервер готов к работе. Это включает в себя подключение к серверу, обновление списка пакетов и установку необходимых утилит.
Подключение к VPS по SSH
Первым шагом является подключение к вашему VPS через SSH (Secure Shell). Для этого вам потребуется SSH-клиент, такой как PuTTY (для Windows) или встроенный терминал (для macOS и Linux). Вам понадобится IP-адрес вашего сервера, имя пользователя (обычно `root` или имя пользователя, созданное при настройке сервера) и пароль.
Пример команды для подключения через SSH (Linux/macOS):
ssh user@your_server_ip
Замените `user` на имя пользователя и `your_server_ip` на IP-адрес вашего сервера. После ввода команды вам будет предложено ввести пароль. Введите пароль и нажмите Enter.
Пример подключения через PuTTY (Windows):
- Запустите PuTTY.
- В поле «Host Name (or IP address)» введите IP-адрес вашего сервера.
- Убедитесь, что порт указан как 22 (стандартный порт для SSH).
- Нажмите кнопку «Open».
- В открывшемся окне терминала введите имя пользователя и пароль.
Обновление списка пакетов и установленных пакетов
После подключения к серверу, необходимо обновить список пакетов и установленные пакеты. Это позволит убедиться, что у вас установлены последние версии программного обеспечения и что у вас есть доступ к самым свежим версиям Nginx.
Для Debian/Ubuntu:
sudo apt update
sudo apt upgrade
`sudo apt update` обновляет список доступных пакетов. `sudo apt upgrade` обновляет установленные пакеты до последних версий. Рекомендуется перезагрузить сервер после обновления, если было обновлено ядро системы.
Для CentOS/RHEL/Fedora:
sudo yum update
Или, для более новых версий Fedora:
sudo dnf update
`sudo yum update` или `sudo dnf update` обновляют все установленные пакеты до последних версий. Также может потребоваться перезагрузка сервера.
Установка необходимых утилит
Для дальнейшей работы с сервером и Nginx могут потребоваться дополнительные утилиты, такие как `nano` или `vim` (текстовые редакторы), `curl` или `wget` (для загрузки файлов), `unzip` (для распаковки архивов) и другие.
Пример установки утилит на Debian/Ubuntu:
sudo apt install nano curl wget unzip
Пример установки утилит на CentOS/RHEL/Fedora:
sudo yum install nano curl wget unzip
Установите те утилиты, которые вам понадобятся для работы с сервером.
Экспертный совет: Всегда обновляйте систему перед установкой нового программного обеспечения. Это поможет избежать проблем с зависимостями и обеспечит стабильную работу вашего сервера.
Установка Nginx на VPS

После подготовки сервера можно приступать к установке Nginx. Процесс установки Nginx зависит от используемой операционной системы.
Установка Nginx на Debian/Ubuntu
Для установки Nginx на Debian/Ubuntu используйте следующую команду:
sudo apt install nginx
Во время установки вам может быть предложено подтвердить установку. Введите `y` и нажмите Enter.
После завершения установки Nginx будет автоматически запущен. Чтобы проверить, что Nginx работает, откройте веб-браузер и перейдите по IP-адресу вашего сервера. Вы должны увидеть стандартную страницу приветствия Nginx.
Пример команды для проверки статуса Nginx:
sudo systemctl status nginx
Эта команда покажет текущий статус Nginx (запущен или остановлен), а также последние логи.
Установка Nginx на CentOS/RHEL/Fedora
Для установки Nginx на CentOS/RHEL/Fedora используйте следующую команду:
sudo yum install nginx
Или, для более новых версий Fedora:
sudo dnf install nginx
После установки необходимо запустить Nginx и включить его автоматический запуск при загрузке системы:
sudo systemctl start nginx
sudo systemctl enable nginx
`sudo systemctl start nginx` запускает Nginx. `sudo systemctl enable nginx` включает автоматический запуск Nginx при загрузке системы.
Как и в случае с Debian/Ubuntu, вы можете проверить статус Nginx с помощью команды `sudo systemctl status nginx` и открыть веб-браузер по IP-адресу вашего сервера, чтобы увидеть страницу приветствия Nginx.
Настройка Firewall (брандмауэра)
После установки Nginx необходимо настроить firewall, чтобы разрешить доступ к веб-серверу извне. По умолчанию Nginx использует порты 80 (HTTP) и 443 (HTTPS).
Для UFW (Uncomplicated Firewall) на Debian/Ubuntu:
sudo ufw allow 'Nginx HTTP'
sudo ufw allow 'Nginx HTTPS'
sudo ufw enable
`sudo ufw allow ‘Nginx HTTP’` разрешает доступ к порту 80. `sudo ufw allow ‘Nginx HTTPS’` разрешает доступ к порту 443. `sudo ufw enable` включает firewall.
Для FirewallD на CentOS/RHEL/Fedora:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
`sudo firewall-cmd —permanent —add-service=http` разрешает доступ к порту 80. `sudo firewall-cmd —permanent —add-service=https` разрешает доступ к порту 443. `—permanent` делает изменения постоянными после перезагрузки. `sudo firewall-cmd —reload` перезагружает firewall, применяя изменения.
Пример команды для проверки статуса FirewallD:
sudo firewall-cmd --list-all
Эта команда покажет текущие правила firewall.
Основная настройка Nginx и виртуальные хосты
После установки Nginx необходимо настроить его для работы с вашими сайтами. Это включает в себя настройку виртуальных хостов и основных параметров Nginx.
Основные конфигурационные файлы Nginx
Основной конфигурационный файл Nginx находится по адресу `/etc/nginx/nginx.conf`. Этот файл содержит общие настройки Nginx, такие как количество рабочих процессов, максимальное количество соединений и другие параметры.
Конфигурационные файлы виртуальных хостов находятся в каталоге `/etc/nginx/conf.d/` (на CentOS/RHEL/Fedora) или `/etc/nginx/sites-available/` и `/etc/nginx/sites-enabled/` (на Debian/Ubuntu). На Debian/Ubuntu в `/etc/nginx/sites-available/` хранятся файлы конфигурации виртуальных хостов, а в `/etc/nginx/sites-enabled/` находятся символические ссылки на файлы из `/etc/nginx/sites-available/`, определяющие, какие виртуальные хосты активны.
Пример структуры каталогов на Debian/Ubuntu:
/etc/nginx/
├── nginx.conf # Основной конфигурационный файл
├── sites-available/
│ └── default # Пример конфигурационного файла виртуального хоста
├── sites-enabled/
│ └── default # Символическая ссылка на default из sites-available
Настройка виртуального хоста
Виртуальный хост позволяет запускать несколько сайтов на одном сервере. Для каждого сайта создается отдельный конфигурационный файл.
Пример конфигурационного файла виртуального хоста (Debian/Ubuntu):
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
root /var/www/yourdomain.com;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
Замените `yourdomain.com` на имя вашего домена. `root /var/www/yourdomain.com` указывает на корневой каталог сайта. `index index.html index.htm` определяет файлы, которые будут использоваться в качестве главной страницы. `location /` определяет, как Nginx обрабатывает запросы к сайту.
Шаги для создания и активации виртуального хоста (Debian/Ubuntu):
- Создайте файл конфигурации виртуального хоста:
sudo nano /etc/nginx/sites-available/yourdomain.com
- Вставьте содержимое примера конфигурационного файла и замените `yourdomain.com` на ваше доменное имя.
- Создайте символическую ссылку на этот файл в каталоге `/etc/nginx/sites-enabled/`:
sudo ln -s /etc/nginx/sites-available/yourdomain.com /etc/nginx/sites-enabled/
- Удалите стандартный виртуальный хост:
sudo rm /etc/nginx/sites-enabled/default
- Перезапустите Nginx:
sudo systemctl restart nginx
Пример конфигурационного файла виртуального хоста (CentOS/RHEL/Fedora):
server {
listen 80;
server_name yourdomain.com www.yourdomain.com;
root /usr/share/nginx/html/yourdomain.com;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
Шаги для создания и активации виртуального хоста (CentOS/RHEL/Fedora):
- Создайте файл конфигурации виртуального хоста:
sudo nano /etc/nginx/conf.d/yourdomain.com.conf
- Вставьте содержимое примера конфигурационного файла и замените `yourdomain.com` на ваше доменное имя.
- Перезапустите Nginx:
sudo systemctl restart nginx
Тестирование конфигурации Nginx
Перед перезапуском Nginx рекомендуется проверить конфигурацию на наличие ошибок. Это можно сделать с помощью следующей команды:
sudo nginx -t
Если в конфигурации есть ошибки, команда выведет сообщение об ошибке с указанием файла и строки, в которой она находится. Исправьте ошибки и повторите проверку.
Пример успешного результата проверки конфигурации:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Экспертный совет: Используйте систему контроля версий (например, Git) для хранения конфигурационных файлов Nginx. Это позволит вам легко откатываться к предыдущим версиям в случае возникновения проблем.
Обеспечение безопасности Nginx
Обеспечение безопасности Nginx является важным аспектом настройки веб-сервера. Это включает в себя настройку SSL/TLS, ограничение доступа и защиту от DDoS-атак.
Настройка SSL/TLS с помощью Let’s Encrypt
SSL/TLS шифрование обеспечивает безопасную передачу данных между сервером и клиентом. Let’s Encrypt — это бесплатный центр сертификации, который позволяет получить SSL/TLS сертификаты для вашего сайта.
Установка Certbot (клиент Let’s Encrypt):
Для Debian/Ubuntu:
sudo apt install certbot python3-certbot-nginx
Для CentOS/RHEL/Fedora:
sudo yum install certbot python3-certbot-nginx
Или, если yum не находит пакет:
sudo dnf install certbot python3-certbot-nginx
Получение и установка SSL/TLS сертификата:
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
Замените `yourdomain.com` на имя вашего домена. Certbot автоматически настроит Nginx для использования SSL/TLS и настроит автоматическое обновление сертификата.
Во время работы Certbot вам будет предложено ввести адрес электронной почты и принять условия использования. Также вам будет предложено перенаправлять HTTP-трафик на HTTPS. Рекомендуется выбрать этот вариант для повышения безопасности.
Ограничение доступа к административным панелям
Если на вашем сервере установлены административные панели (например, phpMyAdmin), рекомендуется ограничить доступ к ним, чтобы предотвратить несанкционированный доступ.
Пример конфигурации Nginx для ограничения доступа к phpMyAdmin:
location /phpmyadmin {
allow 192.168.1.0/24; # Разрешить доступ только из локальной сети
allow 10.0.0.0/16; # Разрешить доступ только из другой локальной сети
deny all; # Запретить доступ всем остальным
}
Замените `192.168.1.0/24` и `10.0.0.0/16` на диапазоны IP-адресов, с которых вы хотите разрешить доступ. `deny all` запрещает доступ всем остальным IP-адресам.
Добавьте этот блок в конфигурационный файл вашего виртуального хоста.
Защита от DDoS-атак
DDoS-атаки (Distributed Denial of Service) могут вывести ваш сайт из строя, перегрузив сервер большим количеством запросов. Для защиты от DDoS-атак можно использовать различные методы, такие как ограничение количества соединений с одного IP-адреса и использование CDN (Content Delivery Network).
Пример конфигурации Nginx для ограничения количества соединений с одного IP-адреса:
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=1r/s;
server {
...
location / {
limit_req zone=mylimit burst=5 nodelay;
...
}
}
`limit_req_zone` определяет зону для хранения информации о количестве запросов с каждого IP-адреса. `zone=mylimit:10m` создает зону с именем `mylimit` и размером 10 МБ. `rate=1r/s` ограничивает количество запросов до 1 в секунду. `limit_req zone=mylimit burst=5 nodelay` позволяет клиенту отправить до 5 запросов в короткий промежуток времени (burst), прежде чем Nginx начнет ограничивать запросы. `nodelay` отключает задержку при превышении лимита burst.
Альтернативные методы защиты от DDoS-атак:
- Использование CDN: CDN распределяет контент вашего сайта по нескольким серверам, что позволяет снизить нагрузку на основной сервер и защититься от DDoS-атак.
- Использование брандмауэра: Брандмауэр может блокировать подозрительный трафик и защищать ваш сервер от DDoS-атак.
- Регулярное обновление программного обеспечения: Регулярное обновление программного обеспечения позволяет закрывать известные уязвимости и повышать безопасность вашего сервера.
Внешняя ссылка: Подробнее о безопасности Nginx можно узнать на сайте nginx.com.
Проверка и отладка работы Nginx
После установки и настройки Nginx необходимо проверить его работу и убедиться, что все настроено правильно. Это включает в себя проверку доступности сайта, просмотр логов и отладку ошибок.
Проверка доступности сайта
Самый простой способ проверить доступность сайта — открыть его в веб-браузере. Введите имя вашего домена в адресную строку и нажмите Enter. Если сайт открывается, значит, Nginx работает правильно и настроен верно.
Если сайт не открывается, проверьте следующее:
- Правильность имени домена: Убедитесь, что вы правильно ввели имя домена в адресную строку.
- Настройки DNS: Убедитесь, что DNS-записи вашего домена указывают на IP-адрес вашего сервера.
- Настройки firewall: Убедитесь, что firewall разрешает доступ к портам 80 и 443.
- Статус Nginx: Убедитесь, что Nginx запущен и работает правильно.
- Конфигурация Nginx: Убедитесь, что конфигурация Nginx настроена верно и не содержит ошибок.
Просмотр логов Nginx
Логи Nginx содержат информацию о запросах к сайту и ошибках, которые возникают во время работы Nginx. Логи могут быть полезны для отладки ошибок и анализа трафика.
Основные логи Nginx:
/var/log/nginx/access.log
: Содержит информацию о каждом запросе к сайту./var/log/nginx/error.log
: Содержит информацию об ошибках, которые возникают во время работы Nginx.
Пример просмотра лога ошибок Nginx:
sudo tail -f /var/log/nginx/error.log
`sudo tail -f /var/log/nginx/error.log` выводит последние строки файла `/var/log/nginx/error.log` и обновляет вывод в режиме реального времени, показывая новые ошибки, возникающие во время работы Nginx.
Пример анализа лога доступа Nginx с помощью awk:
sudo awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -10
Эта команда выводит 10 IP-адресов, с которых поступает наибольшее количество запросов к вашему сайту. Она использует `awk` для извлечения IP-адреса ($1), `sort` для сортировки IP-адресов, `uniq -c` для подсчета количества уникальных IP-адресов, `sort -nr` для сортировки по количеству запросов в обратном порядке и `head -10` для вывода первых 10 строк.
Отладка ошибок
Если вы обнаружили ошибки в логах Nginx, необходимо их отладить. Для этого можно использовать различные методы, такие как:
- Проверка конфигурации Nginx: Убедитесь, что конфигурация Nginx настроена верно и не содержит ошибок.
- Проверка прав доступа: Убедитесь, что у Nginx есть права доступа к файлам и каталогам сайта.
- Проверка зависимостей: Убедитесь, что у вас установлены все необходимые зависимости для работы сайта.
- Использование отладчика: Используйте отладчик для пошагового выполнения кода и выявления ошибок.
Пример распространенной ошибки и ее решения:
Ошибка: 403 Forbidden.
Причина: У Nginx нет прав доступа к файлам сайта.
Решение: Измените права доступа к файлам сайта, предоставив Nginx права на чтение и выполнение.
sudo chown -R www-data:www-data /var/www/yourdomain.com
sudo chmod -R 755 /var/www/yourdomain.com
Замените `/var/www/yourdomain.com` на корневой каталог вашего сайта. `www-data` — имя пользователя и группы, от имени которых работает Nginx (на Debian/Ubuntu). На CentOS/RHEL/Fedora это обычно `nginx`. `chown` изменяет владельца и группу файлов. `chmod` изменяет права доступа к файлам. `755` предоставляет владельцу права на чтение, запись и выполнение, а группе и остальным пользователям — права на чтение и выполнение.
Цитата: «Отладка — это процесс удаления дефектов, которые были добавлены программистом.» — Edsger W. Dijkstra.