Для установки Nginx на сервере LinuxОбновите пакеты, установите пакет nginx, запустите и включите службу, откройте порты 80/443 в брандмауэре и проверьте стандартную приветственную страницу. В Ubuntu/Debian используйте apt; в RHEL/CentOS/AlmaLinux используйте dnf. Затем настройте блокировку сервера, включите HTTPS с помощью Let's Encrypt и перезагрузите систему. Nginx.
В этом руководстве вы узнаете, как установить... Nginx Правильно и безопасно — надежно и с настройками, готовыми к использованию в производственной среде — на сервере Linux. Как старший технический писатель в... YouStableЯ расскажу вам о командах, специфичных для каждого дистрибутива, настройке серверных блоков, HTTPS с использованием Let's Encrypt, обратном проксировании, оптимизации производительности и устранении неполадок.
Что Nginx и зачем это использовать?

Nginx является высокопроизводительным веб-сервер Обратный прокси-сервер известен низким потреблением памяти и способностью обрабатывать тысячи одновременных подключений. Он идеально подходит для обслуживания статических файлов, балансировки нагрузки и в качестве... SSL терминатор или проксирование к серверам приложений, таким как Node.js, Python (Gunicorn/Uvicorn), PHP-FPM и Ruby.
Предварительные требования и краткий контрольный список
Перед установкой Nginx В Linux убедитесь, что у вас установлено:
- Поддерживаемые ОС: Ubuntu 22.04/24.04, Debian 12, RHEL/CentOS/AlmaLinux/Rocky 8/9 или Amazon Linux.
- Доступ с правами root или sudo к командной оболочке сервера.
- Брандмауэр предоставляет доступ к открытым портам 80 (HTTP) и 443 (HTTPS).
- Необязательно: домен, указывающий на публичный IP-адрес вашего сервера. DNS Записи категории A/AAAA.
- Синхронизация времени (chrony или systemd-timesyncd) для TLS-сертификатов.
Установите Nginx на Ubuntu/Debian
В Ubuntu и Debian для установки используйте pt. Nginx из официальных репозиториев.
Шаг 1. Обновление и установка
sudo apt update
sudo apt install -y nginx
sudo systemctl enable --now nginxШаг 2: Откройте брандмауэр (UFW)
sudo ufw allow 'Nginx Full'
sudo ufw statusЕсли UFW не включен, вы можете пропустить этот шаг или включить его с осторожностью.
Шаг 3. Проверьте Nginx
systemctl status nginx --no-pager
curl -I http://YOUR_SERVER_IP
# Or visit http://YOUR_SERVER_IP in a browserВы должны увидеть код 200 OK и значение по умолчанию. Nginx Приветственная страница.
Установите Nginx на RHEL, CentOS, AlmaLinux, Rocky и Amazon Linux
В системах семейства RHEL для установки используйте dnf (или yum). Nginx.
Шаг 1: Установка и запуск
# RHEL/CentOS/AlmaLinux/Rocky 8/9
sudo dnf install -y nginx
sudo systemctl enable --now nginx
# Amazon Linux 2023
sudo dnf install -y nginx
sudo systemctl enable --now nginx
# Amazon Linux 2 (if needed)
# sudo amazon-linux-extras install nginx1 -y
# sudo systemctl enable --now nginxШаг 2: Откройте брандмауэр (firewalld)
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reloadЕсли включен SELinux и вы планируете использовать проксирование для локальных приложений или пользовательские корневые веб-серверы, установите правильные контексты/логические значения:
# Allow Nginx to connect to network services (for reverse proxy)
sudo setsebool -P httpd_can_network_connect 1
# Label a custom web root directory for Nginx
sudo chcon -R -t httpd_sys_content_t /var/www/example.com/htmlСоздайте серверный блок (виртуальный хост).
Блоки сервера позволяют размещать несколько доменов или приложений. Ниже приведена простая, безопасная для использования в производственной среде конфигурация HTTP, которая обслуживает статический контент для example.com. При необходимости скорректируйте пути и доменные имена.
Шаг 1: Подготовка каталогов и прав доступа.
sudo mkdir -p /var/www/example.com/html
echo "<h1>It works!</h1>" | sudo tee /var/www/example.com/html/index.html
# Give ownership to your user or the web user
sudo chown -R $USER:$USER /var/www/example.com
sudo find /var/www/example.com -type d -exec chmod 755 {} ;Шаг 2: Добавить Nginx Блок сервера
В Ubuntu/Debian создайте файл в папке sites-available и включите его. В семействах RHEL поместите его в conf.d.
# Ubuntu/Debian
sudo nano /etc/nginx/sites-available/example.com
# RHEL/CentOS/AlmaLinux/Rocky/Amazon Linux
sudo nano /etc/nginx/conf.d/example.com.confserver {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
root /var/www/example.com/html;
index index.html index.htm;
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log warn;
location / {
try_files $uri $uri/ =404;
}
}Включите сайт и перезагрузите страницу. Nginx:
# Ubuntu/Debian only
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com
# All distros: test and reload
sudo nginx -t
sudo systemctl reload nginxВключите HTTPS с помощью Let's Encrypt (Certbot)
HTTPS имеет важное значение для безопасности, SEO и доверия к браузерам. Certbot может автоматически запрашивать и устанавливать сертификаты, настраивать TLS и устанавливать условия продления.
Установить Certbot
# Ubuntu/Debian
sudo apt install -y certbot python3-certbot-nginx
# RHEL/CentOS/AlmaLinux/Rocky/Amazon Linux
sudo dnf install -y certbot python3-certbot-nginxЗапросить и установить сертификат
sudo certbot --nginx -d example.com -d www.example.com
# Follow prompts to enable redirect (HTTP to HTTPS)Certbot настраивает автоматическое продление сертификата с помощью таймера systemd или cron. Проверьте это:
sudo systemctl status certbot.timer
sudo certbot renew --dry-runУбедитесь, что порт 443 открыт в вашем брандмауэре. DNS Записи A/AAAA указывают на ваш сервер перед запуском Certbot.
Используйте Nginx в качестве обратного прокси (Node.js, Python, PHP-ФПМ)
Nginx Отлично подходит для проксирования трафика на серверы приложений. Ниже представлена базовая конфигурация обратного прокси с поддержкой WebSocket, идеально подходящая для приложений Node.js или Python, работающих на localhost:3000.
server {
listen 80;
server_name app.example.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
# Forward client details
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;
# WebSocket
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}В системах с поддержкой SELinux разрешите сетевые подключения для веб-сервера при использовании проксирования к приложениям верхнего уровня:
sudo setsebool -P httpd_can_network_connect 1Оптимизация производительности и повышение уровня безопасности
После установки Nginx В Linux примените эти практические оптимизации для повышения скорости и безопасности.
Gzip и HTTP/2
# /etc/nginx/conf.d/performance.conf (create this file)
gzip on;
gzip_comp_level 5;
gzip_min_length 256;
gzip_types text/plain text/css application/json application/javascript application/xml text/xml image/svg+xml;
gzip_vary on;Протокол HTTP/2 автоматически включается на TLS-слушателях (listen 443 ssl http2;). Установщик nginx от Certbot обычно добавляет эту директиву автоматически.
Надежные заголовки TLS и безопасности.
# /etc/nginx/conf.d/security.conf
server_tokens off; # Hide Nginx version
client_max_body_size 20m; # Adjust for your uploads
# Basic security headers (tune CSP to your app)
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Content-Security-Policy "default-src 'self'" always;Ограничение скорости запросов (предотвращение DDoS-атак/атаок методом перебора паролей)
Определите зону разделяемой памяти в контексте HTTP и примените её для каждого местоположения:
# In /etc/nginx/nginx.conf (http block) or /etc/nginx/conf.d/limits.conf
limit_req_zone $binary_remote_addr zone=perip:10m rate=10r/s;
# In a server/location block
location /login {
limit_req zone=perip burst=20 nodelay;
proxy_pass http://127.0.0.1:3000;
}Управление Nginx с использованием Systemd и логов
Используйте эти команды ежедневно для безопасного внесения изменений, перезапуска и отладки.
# Validate syntax before reload
sudo nginx -t
# Reload without dropping connections
sudo systemctl reload nginx
# Start/Stop/Status
sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl status nginx
# Recent logs
sudo journalctl -u nginx --since "1 hour ago" --no-pager
tail -f /var/log/nginx/error.log
tail -f /var/log/nginx/access.logУстранение распространенных проблем
- Порт уже используется: проверьте прослушиватели с помощью команды `sudo ss -tulpn | grep :80 or :443`. Остановите конфликтующие службы (например, Apache) или сменить порты.
- Ошибка 403 Forbidden: Исправьте права доступа к каталогам и контексты SELinux. Убедитесь, что корневой путь существует и доступен для чтения.
- 404 Not Found: Проверьте server_name, DNSи try_files в блоке location.
- Ошибка 502 Bad Gateway: Приложение, предоставляющее исходный код, недоступно или заблокировано SELinux. Запустите приложение, проверьте proxy_pass и включите httpd_can_network_connect.
- Сбои Certbot: Подтверждение DNS Записи, открытые порты 80/443 и отсутствие принудительной блокировки HTTP-трафика брандмауэрами или CDN во время проверки.
Чистая деинсталляция или переустановка Nginx
В Ubuntu / Debian:
# Remove binaries but keep configs
sudo apt remove nginx nginx-common
# Full purge (removes configs)
sudo apt purge nginx nginx-common
sudo rm -rf /etc/nginx /var/www/example.comВ системах семейства RHEL:
sudo dnf remove nginx
# Optionally remove /etc/nginx and any custom web roots with careПрактические советы, основанные на более чем 15-летнем опыте управления. Nginx
- Фиксация версий: В производственной среде тестовые обновления следует проводить на тестовой среде. Фиксируйте версии через ваш пакет. manageчтобы избежать неожиданных изменений.
- Перезагрузка без простоев: всегда запускайте команду sudo nginx -t перед перезагрузкой. Используйте команду reload (а не restart), чтобы поддерживать соединения в активном состоянии.
- Раздельные конфигурации: для обеспечения чистоты храните конфигурации сайтов в папках sites-available/sites-enabled (в стиле Debian) или в файле conf.d для каждого домена.
- Ротация логов: Убедитесь, что logrotate настроен для Nginx для предотвращения раздувания диска.
- Резервное копирование: Отслеживайте изменения с помощью Git и регулярно создавайте резервные копии файлов /etc/nginx и TLS-содержимого (/etc/letsencrypt).
Зачем устанавливать Nginx на YouStable серверу
Если вы предпочитаете обойтись без тяжелой работы, YouStableVPS с поддержкой SSD и облако Серверы поставляются с современной операционной системой Linux, полным доступом root и опционально. managed поддержка. Мы предварительно укрепим ваш стек. конфигурировать Nginx Благодаря HTTPS вы можете оптимизировать систему под свою CMS или приложение и отслеживать время безотказной работы, чтобы сосредоточиться на своем бизнесе, а не на обслуживании серверов.
Часто задаваемые вопросы: Установка Nginx на сервере Linux
Что такое Nginx используется для?
Nginx Это веб-сервер и обратный прокси. Он обслуживает статические веб-сайты и перенаправляет запросы к бэкэнд-приложениям (Node.js, Python, PHP-FPM), завершает TLS, распределяет нагрузку между вышестоящими серверами и выступает в качестве кэширующего слоя для повышения производительности.
Как мне это проверить? Nginx это работает?
Для подтверждения процессов используйте команду systemctl status nginx или ps aux | grep nginx. Вы также можете протестировать локально с помощью curl -I http://127.0.0.1 и проверить логи в /var/log/nginx/.
Nginx vs ApacheЧто мне выбрать?
Nginx Особенно хорошо подходит для сценариев с высокой степенью параллелизма, статическими ресурсами и обратным прокси-сервером. Apache Предлагает глубокую интеграцию с .htaccess и богатый набор модулей. Многие команды размещают Nginx перед Apache или серверы приложений, чтобы получить лучшее из обоих миров.
Где Nginx конфигурационные файлы?
Глобальная конфигурация обычно находится в файле /etc/nginx/nginx.conf. Конфигурации сайтов находятся в файлах /etc/nginx/sites-available и sites-enabled в Ubuntu/Debian или в файле /etc/nginx/conf.d в системах типа RHEL.
Как мне перезагрузить или переустановить систему? Nginx безопасно?
Сначала проверьте правильность установки с помощью команды `sudo nginx -t`, затем перезагрузите систему с помощью команды `sudo systemctl reload nginx`, чтобы применить изменения без разрыва соединений. Используйте команду `restart` только при необходимости.
Как удалить Nginx полностью?
В Ubuntu/Debian выполните команду sudo apt purge nginx nginx-common и удалите файл /etc/nginx. В системах типа RHEL выполните команду sudo dnf remove nginx и очистите файл /etc/nginx и корневые каталоги веб-сервера, если они больше не нужны.
Как включить HTTPS на Nginx?
Установите Certbot и Nginx Затем запустите плагин и выполните команду sudo certbot –nginx -d yourdomain -d www.yourdomain. Certbot получит сертификаты, настроит TLS и установит автоматическое продление.
Заключение
Теперь вы знаете, как установить. Nginx На сервере Linux откройте брандмауэры, настройте блокировку сервера, включите HTTPS, настройте обратный прокси для приложений и усильте безопасность для производственной среды. Следуйте передовым практикам — тестируйте конфигурации, выполняйте корректную перезагрузку и отслеживайте журналы — чтобы поддерживать высокую доступность. Хотите начать быстрее? YouStable обеспечение, защита и оптимизация Nginx для вас.
