Как установить Nginx на Ubuntu
Введение
Nginx является одним из самых популярных веб-серверов в мире, обеспечивая работу более 33% всех веб-сайтов в глобальном масштабе. Он отвечает за хостинг некоторых из крупнейших и самых посещаемых сайтов в Интернете, включая Netflix, Pinterest и Airbnb. Nginx — это легковесный, высокопроизводительный выбор, который превосходно работает как веб-сервер и как обратный прокси.
Этот комплексный гид охватывает установку и настройку Nginx на Ubuntu 22.04, 24.04 и 25.04, с пошаговыми инструкциями по настройке брандмауэра, усилению безопасности, оптимизации производительности и устранению распространенных проблем.
Ключевые выводы
- Установка и настройка: Узнайте, как установить Nginx из официальных репозиториев Ubuntu, настроить правила брандмауэра с помощью UFW и проверить установку
- Управление сервисами: Освойте команды systemd для запуска, остановки, включения и перезагрузки Nginx, а также проверьте статус и конфигурацию сервиса.
- Конфигурация сервера: Настройте серверные блоки (виртуальные хосты) для хостинга нескольких доменов, установите корневые директории документов и управляйте директивами Nginx.
- Укрепление безопасности: Внедрение лучших практик безопасности, включая SSL/TLS с использованием Let’s Encrypt, заголовки безопасности, ограничение частоты запросов и контроль доступа.
- Оптимизация производительности: Тонкая настройка рабочих процессов, предельные значения соединений, кэширование и сжатие для достижения оптимальной производительности
- Обратный прокси и балансировка нагрузки: Настройте Nginx в качестве обратного прокси для серверных приложений с возможностями балансировки нагрузки.
- Устранение неполадок и журналы: Мониторинг доступов и журналов ошибок, диагностика распространенных проблем и внедрение эффективных стратегий отладки.
- Особенности, специфичные для версии: Поймите ключевые различия между Ubuntu 22.04, 24.04 и 25.04 для развертывания Nginx
- Обслуживание и мониторинг: Установите процедуры резервного копирования, реализуйте мониторинг и поддерживайте здоровье сервера с помощью регулярных обновлений
- Готовность к производству: Разверните безопасный, оптимизированный и хорошо настроенный сервер Nginx, подходящий для производственных сред
Разворачивайте свои приложения из GitHub с помощью платформы приложений DigitalOcean. Позвольте DigitalOcean сосредоточиться на масштабировании вашего приложения.
Предварительные условия
Перед тем как начать этот гайд, у вас должно быть:
- Ubuntu Server: настройка и установка Ubuntu 22.04 LTS, 24.04 LTS или 25.04.
- Непривилегированный пользователь: Обычная учетная запись пользователя с настроенными правами sudo.
- Доменное имя (необязательно): Для конфигурации блока сервера и настройки SSL
- Основные знания терминала: Знание командных операций.
Совместимость версий Ubuntu
| Версия Ubuntu | Версия Nginx | Статус поддержки | Заметки |
|---|---|---|---|
| Ubuntu 22.04 LTS | 1.18.0+ | Полностью поддерживается | Долгосрочная поддержка до 2027 года |
| Ubuntu 24.04 LTS | 1.24.0+ | Полностью поддерживается | Последняя версия LTS с улучшенной безопасностью |
| Ubuntu 25.04 | 1.26.0+ | Полностью поддерживается | Последние функции и улучшения производительности |
Вы можете узнать, как настроить обычную учетную запись пользователя, следуя нашему руководству по начальной настройке сервера для Ubuntu.
Чтобы узнать больше о настройке доменного имени с помощью DigitalOcean, пожалуйста, ознакомьтесь с нашим Введением в DNS DigitalOcean.
Когда у вас есть доступная учетная запись, войдите как ваш нерутовый пользователь, чтобы начать.
Шаг 1 – Установка Nginx
Nginx доступен в стандартных репозиториях Ubuntu для всех поддерживаемых версий. Мы установим его с помощью системы упаковки apt с последней стабильной версией.
Обновить системные пакеты
Сначала обновите локальный индекс пакетов, чтобы гарантировать доступ к самым свежим спискам пакетов:
- sudo apt update
- sudo apt upgrade -y
Установите Nginx
Установите Nginx, используя следующую команду:
- sudo apt install nginx -y
Нажмите Y, когда появится запрос на подтверждение установки. Если вам предложат перезапустить какие-либо службы, нажмите ENTER, чтобы принять настройки по умолчанию и продолжить. apt установит Nginx и все необходимые зависимости на ваш сервер.
Проверьте установку
Проверьте установленную версию Nginx:
- nginx -v
Ожидаемый результат:
nginx version: nginx/1.24.0 (Ubuntu)
Проверьте статус установки
Проверьте, что Nginx был установлен правильно:
- dpkg -l | grep nginx
Вы должны увидеть аналогичный вывод:
ii nginx-common 1.24.0-1ubuntu1 all small, powerful, scalable web/proxy server - common files ii nginx-core 1.24.0-1ubuntu1 amd64 nginx web/proxy server (core version) ii nginx 1.24.0-1ubuntu1 all small, powerful, scalable web/proxy server (default version)
Шаг 2 – Настройка брандмауэра
Перед тестированием Nginx необходимо настроить программное обеспечение брандмауэра для разрешения доступа к сервису. Nginx регистрирует себя как сервис в ufw при установке, что упрощает предоставление доступа к Nginx.
Перечислите конфигурации приложений, с которыми ufw умеет работать, набрав:
- sudo ufw app list
Вы должны получить список профилей приложения:
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-трафик разрешен:
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 22.04 запускает Nginx. Веб-сервер уже должен быть запущен и работать.
Мы можем проверить с помощью инициализационной системы systemd, работает ли служба, набрав:
- 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 2022-03-01 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, но вы должны заменить это на ваше собственное имя домена.
Nginx на Ubuntu 22.04 поставляется с одним заблокированным сервером, включенным по умолчанию, настроенным на обслуживание документов из директории по адресу /var/www/html. Хотя это отлично подходит для одного сайта, это может стать неудобным, если вы хостите несколько сайтов. Вместо того чтобы менять /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, которое устанавливает стандартные права на файлы. Чтобы убедиться, что ваши права доступа правильные и позволяют владельцу читать, записывать и исполнять файлы, а также предоставляют только права на чтение и исполнение для групп и других пользователей, вы можете ввести следующую команду:
- sudo chmod -R 755 /var/www/your_domain
Затем создайте пример страницы index.html с помощью nano или вашего любимого редактора:
- 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, которую Nginx читает при запуске:
- sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
Примечание: Nginx использует общепринятую практику, называемую символическими ссылками, или symlink’ами, для отслеживания того, какие из ваших серверных блоков включены. Создание символической ссылки похоже на создание ярлыка на диске, так что вы могли бы позже удалить ярлык из директории sites-enabled, сохранив серверный блок в sites-available, если вы захотите его включить.
Теперь включены и настроены два серверных блока для обработки запросов на основе их директив listen и server_name (вы можете узнать больше о том, как Nginx обрабатывает эти директивы, в нашем подробном руководстве).
your_domain: ответить на запросы для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://ваш_домен, где вы должны увидеть что-то подобное:
Шаг 6 – Укрепление безопасности и оптимизация
Перед тем как перейти к управлению файлами, давайте обеспечим безопасность и оптимизацию вашей установки Nginx для производственного использования.
Основная конфигурация безопасности
Отредактируйте основной файл конфигурации Nginx:
- sudo nano /etc/nginx/nginx.conf
Добавьте эти директивы безопасности в блок http:
Hide Nginx version server_tokens off; Security headers add_header X-Frame-Options "SAMEORIGIN" always; add_header X-XSS-Protection "1; mode=block" always; add_header X-Content-Type-Options "nosniff" always; add_header Referrer-Policy "no-referrer-when-downgrade" always; add_header Content-Security-Policy "default-src 'self' http: https: data: blob: 'unsafe-inline'" always; Disable server signature server_tokens off; Limit request size client_max_body_size 10M; Timeout settings client_body_timeout 12; client_header_timeout 12; keepalive_timeout 15; send_timeout 10;
Оптимизация производительности
Добавьте эти оптимизации производительности в /etc/nginx/nginx.conf:
Worker processes (adjust based on CPU cores) worker_processes auto; Worker connections events { worker_connections 1024; use epoll; multi_accept on; } Gzip compression gzip on; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_types text/plain text/css text/xml text/javascript application/json application/javascript application/xml+rss application/atom+xml image/svg+xml;
Проверить и применить конфигурацию
Проверьте вашу конфигурацию:
- sudo nginx -t
Если тест пройдет, перезагрузите Nginx:
- sudo systemctl reload nginx
Подготовка SSL/TLS
Подготовьтесь к установке SSL-сертификата:
- Install Certbot
- sudo apt install certbot python3-certbot-nginx -y
-
- Check if Certbot is working
- sudo certbot --version
Шаг 7 – Ознакомление с важными файлами и директориями 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 будут записаны в этот журнал.
Как мне защитить свою установку Nginx?
Следуйте этим лучшим практикам безопасности, чтобы улучшить вашу установку Nginx:
| Практика безопасности | Реализация | Команда/Конфигурация | Приоритет |
|---|---|---|---|
| Держите Nginx в обновленном состоянии | Регулярно обновляйте Nginx и системные пакеты |
|
Высокий |
| Настроить брандмауэр | Используйте UFW для ограничения доступа только к необходимым портам. |
|
Высокий |
| Включить SSL/TLS | Установите SSL-сертификаты с помощью Let’s Encrypt |
|
Высокий |
| Скрыть информацию о сервере | Предотвратить раскрытие версии Nginx | Добавьте server_tokens off; в /etc/nginx/nginx.conf |
Средний |
| Безопасные Заголовки | Добавьте заголовки безопасности для предотвращения распространённых атак | Добавьте заголовки в блок сервера (см. пример ниже) | Средний |
| Лимитирование скорости | Защита от DDoS-атак и атак методом грубой силы | Настройте limit_req_zone и limit_req |
Средний |
| Сильная аутентификация | Используйте надежные пароли для административных интерфейсов | Реализуйте базовую аутентификацию HTTP или OAuth | Средний |
| Регулярные резервные копии | Резервное копирование конфигурации и веб-содержимого |
|
Средний |
| Контроль доступа | Ограничить доступ к конфиденциальным директориям | Используйте deny all; или whitelisting IP |
Низкий |
| Мониторинг журналов | Мониторьте доступ и журналы ошибок на предмет подозрительной активности |
|
Низкий |
Пример конфигурации заголовков безопасности
Добавьте эти заголовки в ваш серверный блок для повышения безопасности:
server { ... add_header X-Frame-Options "SAMEORIGIN" always; add_header X-XSS-Protection "1; mode=block" always; add_header X-Content-Type-Options "nosniff" always; add_header Referrer-Policy "no-referrer-when-downgrade" always; add_header Content-Security-Policy "default-src 'self' http: https: data: blob: 'unsafe-inline'" always; ... }
Конфигурация ограничения скорости
Добавьте эту конфигурацию в ваш серверный блок для ограничения скорости:
server { ... limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s; ... }
Часто задаваемые вопросы (FAQ)
1. Как мне запустить и остановить Nginx на Ubuntu 22.04/24.04/25.04?
Используйте команды systemctl для управления сервисом Nginx:
- Start Nginx
- sudo systemctl start nginx
-
- Stop Nginx
- sudo systemctl stop nginx
-
- Restart Nginx
- sudo systemctl restart nginx
-
- Reload configuration without stopping
- sudo systemctl reload nginx
-
- Enable Nginx to start on boot
- sudo systemctl enable nginx
-
- Disable Nginx from starting on boot
- sudo systemctl disable nginx
2. Как я могу проверить, работает ли Nginx?
Используйте эти команды для проверки статуса Nginx:
- Check service status
- sudo systemctl status nginx
-
- Check if Nginx is listening on ports
- sudo netstat -tlnp | grep nginx
-
- Test configuration
- sudo nginx -t
-
- Check Nginx processes
- ps aux | grep nginx
3. Как мне настроить UFW для Nginx?
UFW предоставляет три профиля Nginx для разных уровней безопасности:
- Allow HTTP only (port 80)
- sudo ufw allow 'Nginx HTTP'
-
- Allow HTTPS only (port 443)
- sudo ufw allow 'Nginx HTTPS'
-
- Allow both HTTP and HTTPS
- sudo ufw allow 'Nginx Full'
-
- Check UFW status
- sudo ufw status
4. Какой файл конфигурации Nginx по умолчанию в Ubuntu?
Основной файл конфигурации находится по адресу /etc/nginx/nginx.conf. Конфигурации, специфичные для сайта, хранятся в:
- Доступные сайты:
/etc/nginx/sites-available/ - Включенные сайты:
/etc/nginx/sites-enabled/ - Дефолтный сайт:
/etc/nginx/sites-available/default
5. Как настроить Nginx в качестве обратного прокси?
Настройте серверный блок в /etc/nginx/sites-available/your-domain:
server { listen 80; server_name your-domain.com; location / { proxy_pass http://localhost:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
6. Как мне устранить ошибки Nginx?
Проверьте эти общие шаги по устранению неполадок:
- Test configuration syntax
- sudo nginx -t
-
- Check error logs
- sudo tail -f /var/log/nginx/error.log
-
- Check access logs
- sudo tail -f /var/log/nginx/access.log
-
- Check system logs
- sudo journalctl -u nginx -f
-
- Verify port binding
- sudo netstat -tlnp | grep :80
7. В чем разница между Ubuntu 22.04, 24.04 и 25.04 для Nginx?
Ключевые различия включают:
| Особенность | Ubuntu 22.04 | Ubuntu 24.04 | Ubuntu 25.04 |
|---|---|---|---|
| Версия Nginx | 1.18.0+ | 1.24.0+ | 1.26.0+ |
| Поддержка до | 2027 | 2029 | 2026 |
| Обновления безопасности | Стандартный | Улучшенный | Новости |
| Производительность | Хорошо | Лучше | Лучший |
| Новые функции | Основной | Продвинутый | Современный |
Заключение
Теперь у вас установлен и настроен полностью функционирующий веб-сервер Nginx на Ubuntu 22.04, 24.04 или 25.04. На протяжении этого руководства мы подробно рассмотрели весь процесс настройки Nginx, начиная с первоначальной установки с использованием официальных репозиториев Ubuntu и заканчивая расширенной настройкой безопасности и оптимизацией производительности. Вы узнали, как настроить брандмауэр UFW для защиты вашего веб-сервера, управлять службой Nginx с помощью команд systemd и настраивать серверные блоки для хостинга нескольких доменов. Руководство также обеспечило вас необходимыми знаниями для реализации конфигураций обратного прокси и устранения обычных проблем с помощью анализа журналов.
Понимание особенностей конкретных версий различных релизов Ubuntu поможет вам принимать обоснованные решения о вашей среде развертывания. С мощными функциями Nginx и оптимизированной производительностью ваш веб-сервер теперь готов хостить вебсайты, выполнять функции обратного прокси, реализовывать балансировку нагрузки и обрабатывать приложения с высокой нагрузкой. Меры безопасности и параметры настройки производительности, которые мы рассмотрели, обеспечат стабильность, безопасность и эффективность вашего веб-сервера в рабочей среде.
Следующие шаги
- LEMP стек: Соберите полный стек приложения с помощью установки Linux, Nginx, MySQL, PHP (LEMP стек) на Ubuntu
- Настройка SSL/TLS: Защитите свой сайт с помощью руководства по защите Nginx с помощью Let’s Encrypt на Ubuntu
- Обратный прокси: Настройте Nginx как обратный прокси для ваших приложений




Добавить комментарий