Шукаєте вичерпний посібник з nginx? Цей повний посібник з налаштування nginx охоплює все — від встановлення до розширеного тюнінгу продуктивності nginx та оптимізації. Незалежно від того, чи ви налаштовуєте перший сервер, чи хочете оптимізувати nginx під високий трафік, цей посібник містить практичні найкращі практики nginx, перевірені налаштування nginx та найкращі практики безпеки nginx для максимальної ефективності.
⚡ Коротка відповідь:
- Час налаштування: 45 хвилин
- Рівень навичок: Середній (конфіги надаються, можна копіювати)
- Приріст продуктивності: відповідь на 40-60% швидша
- Пропускна спроможність: обробка 10 000+ запитів/с
- Вартість: Безкоштовно (відкритий код)
Короткий огляд: що ви освоїте
- Оптимізація робочих процесів: Налаштуйте робочі процеси для максимальної пропускної спроможності та обробки сценаріїв з високим трафіком при мінімальних витратах ресурсів
- Стиснення та пропускна здатність: Реалізуйте найкращі практики gzip-стиснення для досягнення зменшення трафіку у 2-5 разів та пришвидшення завантаження сторінок
- Посилення SSL/TLS: Застосуйте техніки посилення безпеки SSL/TLS, щоб отримати рейтинг A+ на SSL Labs та захистити свій трафік
- Завантаження файлів та обмеження швидкості: Оптимізуйте client_max_body_size для завантаження файлів та реалізуйте стратегії обмеження швидкості та захисту від DDoS
- Моніторинг та усунення проблем: Опануйте техніки моніторингу та усунення проблем, щоб швидко виявляти та вирішувати вузькі місця продуктивності
Що таке Nginx і навіщо його використовувати?
Nginx (вимовляється «engine-x») — це потужний, універсальний веб-сервер, розроблений для високої продуктивності, ефективного використання ресурсів та виняткової масштабованості. Nginx використовується для веб-хостингу, зворотного проксіювання, балансування навантаження та кешування і чудово справляється з великим трафіком при мінімальній затримці nginx та низькому споживанні ресурсів. Такі компанії, як Netflix та GitHub, покладаються на nginx у своїй інфраструктурі. Можливості nginx допомагають підвищити SEO-оптимізацію сайту та задовольнити вимоги до масштабованості сучасних веб-сервісів.
Позиція на ринку та продуктивність
Цікавий факт: Nginx займає 18,98% ринку (за даними NetCraft Web Server Survey за жовтень 2024 року), конкуруючи з іншими провідними веб-серверами: Cloudflare, Apache та LiteSpeed. Його ефективність та універсальність роблять його ідеальним для сучасної веб-інфраструктури, що вимагає глибоких знань nginx для побудови високопродуктивних серверів з нуля.
Nginx чудово справляється з обслуговуванням статичного контенту, роботою зворотного проксі та балансуванням навантаження завдяки своїй подієво-орієнтованій архітектурі. Розуміння основ nginx допомагає вам будувати високопродуктивні сервери з нуля. Цей посібник на основі документації nginx охоплює найкращі практики nginx крок за кроком — від базового налаштування до розширеної конфігурації nginx під велике навантаження та тюнінгу nginx для продакшн-середовищ.
Чому варто обирати Nginx для оптимізації продуктивності?
- Коли вам потрібно пришвидшити nginx або реалізувати стратегії швидкого старту оптимізації nginx
- Розуміння правильних налаштувань nginx та найкращих практик конфігурації nginx є ключовим
- Цей посібник охоплює найкращі практики gzip-конфігурації nginx та розширені поради з безпеки nginx
- Відповідає останнім стандартам nginx ssl_prefer_server_ciphers best practice 2024
Nginx чудово справляється з обслуговуванням статичного контенту, зворотним проксіюванням та балансуванням навантаження при мінімальному споживанні ресурсів. Ось порівняння з іншими веб-серверами:
| Характеристика | Nginx | Apache | Microsoft | Cloudflare | LiteSpeed | |
|---|---|---|---|---|---|---|
| Частка ринку (жовт. 2024) | 18,98% | 17,86% | 2,03% | 10,12% | 16,28% | 6,23% |
| Продуктивність | Висока паралельність, ефективний для статичного контенту | Повільніше при високій паралельності, краще для динамічного контенту | Обмежена масштабованість | Оптимізований для Google Cloud | Висока продуктивність, особливо з кешуванням | Найшвидший для динамічного та статичного контенту |
| Ефективність використання ресурсів | Низьке споживання ресурсів | Помірне споживання ресурсів | Підвищене споживання ресурсів | Оптимізований для мінімальних ресурсів | Висока ефективність | Висока ефективність, особливо для WordPress |
| Балансування навантаження | Так | Обмежено | Обмежено | Так | Так | Так |
| Підтримка зворотного проксі | Так | Так | Обмежено | Так | Так | Так |
| Підтримка SSL/TLS | Так (з інтеграцією Certbot) | Так | Так | Так | Так | Так |
| Кешування | Базове кешування, підтримка сторонніх засобів | На основі модулів, складне налаштування | Обмежено | Так (CDN-кешування) | Розширене, вбудоване | Розширене, інтегроване |
| Сумісність платформ | Linux, Windows | Linux, Windows | Лише Windows | Google Cloud | Мультиплатформний | Linux, Windows |
| Складність налаштування | Помірна | Помірна | Проста | Складна | Проста | Проста |
| Основний сценарій використання | Сайти з високим трафіком, статичний контент | Від малих до великих сайтів, динамічний контент | Середовища на базі Windows | Хмарні застосунки | Безпека та кешування | WordPress та хостинг з високою швидкістю |
Крок 1: Вибір найкращого VPS для Nginx
Віртуальний приватний сервер (VPS) — це віртуальна машина, що функціонує як ізольоване віртуальне середовище на фізичному сервері, яким керує хмарний або веб-хостинг-провайдер.
Перш ніж переходити до налаштування nginx, переконайтеся, що у вас є правильний VPS для вашої задачі. Мінімальні вимоги nginx досить скромні, але вибір правильного VPS впливає на загальну продуктивність nginx та вашу здатність ефективно оптимізувати nginx.
Ключові критерії вибору VPS
- Потреби в трафіку: Оберіть VPS з достатніми ресурсами для очікуваного зростання трафіку. Для сайтів з високим трафіком розгляньте сервери мінімум з 2 ГБ RAM та 2 ядрами CPU для ефективної оптимізації nginx.
- Операційна система: Для оптимальної продуктивності nginx використовуйте VPS на базі Linux (рекомендується Ubuntu 20.04+ або Debian 11+).
- Продуктивність та доступність: Шукайте провайдерів із гарантіями доступності 99,9%+ та низькою затримкою для вашої цільової аудиторії.
- Масштабованість та контроль: Переконайтеся, що VPS дозволяє легке масштабування та доступ root для повного контролю налаштування nginx.
- Бюджетні варіанти:
Мінімальні вимоги Nginx: посібник з розмірів сервера
Розуміння розмірів nginx допомагає вам обрати правильний VPS відповідно до посібника з розмірів nginx:
- RAM: Мінімум 512 МБ (рекомендується 1 ГБ+ для продакшну)
- CPU: Мінімум 1 ядро (2+ ядра для високого трафіку)
- Сховище: Мінімум 10 ГБ (рекомендується SSD для кращої продуктивності)
- Трафік: 1 ТБ+ на місяць для сайтів із середнім трафіком
Крок 2: Встановлення та базове налаштування Nginx
Цей розділ охоплює повний процес налаштування nginx — від встановлення до базового налаштування. Дотримуйтесь цих найкращих практик nginx крок за кроком, щоб запустити nginx на вашому сервері з оптимальними налаштуваннями nginx.
Встановлення Nginx на Ubuntu
Щоб встановити nginx на Ubuntu, використовуйте наступні команди для оновлення списку пакетів та встановлення сервера:
sudo apt update
sudo apt install nginx
Розуміння роботи з nginx включає освоєння цих основних команд для довідки nginx та моніторингу статусу nginx:
sudo systemctl status nginx
sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx
sudo systemctl reload nginx
sudo systemctl enable nginx
Розуміння файлів конфігурації Nginx
Файл конфігурації nginx зазвичай знаходиться за адресою /etc/nginx/nginx.conf. Саме тут ви налаштовуєте глобальні параметри nginx, як-от робочі процеси, з'єднання, логування та протоколи SSL для тюнінгу продуктивності nginx та оптимізації nginx.
Найкращі практики SSL у Nginx 2024-2026: налаштування TLS
Ось оптимізований приклад основного конфігураційного файлу nginx з детальними поясненнями. Ця конфігурація відповідає найкращим практикам налаштування nginx та актуальним найкращим практикам nginx щодо безпеки та продуктивності:
events {
worker_connections 1024; # Максимальна кількість одночасних з'єднань на робочий процес. Ви можете налаштувати це залежно від потреб трафіку.
}
http {
sendfile on; # Вмикає ефективну передачу файлів. Залиште увімкненим для обслуговування статичних файлів.
tcp_nopush on; # Оптимізує TCP-пакети для відправки великих файлів. Залиште як є, якщо специфічні вимоги не передбачають іншого.
types_hash_max_size 2048; # Обмежує максимальний розмір хеш-таблиці для MIME-типів. Зазвичай значення за замовчуванням є достатнім.
include /etc/nginx/mime.types; # Включає файл конфігурації MIME-типів, який зіставляє розширення файлів з MIME-типами. Залиште як є.
default_type application/octet-stream; # MIME-тип за замовчуванням для файлів, які не мають певного MIME-типу. Залиште як є, якщо вам не потрібно вказати щось інше.
# Налаштування SSL
ssl_protocols TLSv1.2 TLSv1.3; # Примусово використовує сучасні протоколи TLS. Залиште це з міркувань безпеки.
ssl_prefer_server_ciphers on; # Гарантує, що шифри сервера мають перевагу для безпечних з'єднань. Залиште як є.
ssl_session_cache shared:SSL:10m; # Вмикає кешування SSL-сесій для покращення продуктивності наступних з'єднань.
ssl_session_timeout 10m; # Встановлює тайм-аут кешу сесій на 10 хвилин. Це нормально для більшості випадків використання.
ssl_ciphers 'HIGH:!aNULL:!MD5'; # Вказує надійні шифри для SSL/TLS. Залиште як є, якщо вам не потрібен конкретний набір.
# Заголовки безпеки
add_header X-Content-Type-Options nosniff; # Запобігає інтерпретації браузерами файлів як іншого MIME-типу. Залиште для безпеки.
add_header X-Frame-Options DENY; # Запобігає відображенню сайту у фреймах. Залиште для безпеки, якщо не потрібно інше.
add_header X-XSS-Protection "1; mode=block"; # Захищає від атак міжсайтового скриптингу (XSS). Залиште для безпеки.
server_tokens off; # Приховує інформацію про версію Nginx. Залиште як є, щоб уникнути розкриття деталей сервера.
# Налаштування логування
access_log /var/log/nginx/access.log; # Визначає, куди логувати запити доступу. Залиште, якщо ви не хочете змінити розташування логу.
error_log /var/log/nginx/error.log; # Визначає, куди логувати повідомлення про помилки. Залиште, якщо вам не потрібно змінити розташування логу.
# Налаштування Gzip
gzip on; # Вмикає Gzip-стиснення для кращої продуктивності. Залиште увімкненим для більшості сайтів, щоб зменшити розмір даних.
gzip_vary on; # Повідомляє проксі-серверам, що відповідь змінюється залежно від заголовка Accept-Encoding запиту.
gzip_proxied any; # Вмикає Gzip для всіх проксійованих запитів. Залиште як є, якщо конкретний випадок не вимагає модифікації.
gzip_comp_level 6; # Визначає рівень стиснення. Рівень 6 є хорошим балансом між швидкістю та стисненням.
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; # Вказує типи файлів для стиснення. Це поширені типи, які виграють від стиснення. Налаштуйте за потреби на основі контенту вашого сайту.
# Включення конфігурацій віртуальних хостів
include /etc/nginx/sites-enabled/*; # Включає всі конфігурації з каталогу sites-enabled. Залиште увімкненим, якщо у вас немає конкретної причини вимкнути це.
}
Порада: Просто скопіюйте та вставте це у /etc/nginx/nginx.conf для отримання оптимізованої базової конфігурації. (жодних змін не потрібно)
Крок 3: Налаштування файлу Domain.com
Правильне налаштування домену є критично важливим для продуктивності nginx. У цьому розділі показано, як налаштувати віртуальні хости (серверні блоки) відповідно до найкращих практик налаштування nginx та реалізувати оптимізацію конфігурації nginx для продакшн-середовищ.
Створення нової конфігурації домену
Щоб створити новий файл domain.com для вашого домену в директорії
/etc/nginx/sites-available/
без безпосереднього відкриття, використовуйте наступну команду (змініть domain.com на ім'я вашого
домену):
Наприклад: KOLODYCH.com
— це
моє доменне ім'я.
sudo touch /etc/nginx/sites-available/domain.com
Ця команда створить порожній файл з іменем domain.com у директорії sites-available. Після створення файлу ви можете редагувати його за потреби + створити символічне посилання на sites-enabled за допомогою наступної команди:
sudo ln -s /etc/nginx/sites-available/domain.com /etc/nginx/sites-enabled/
Відкрийте щойно створений файл domain.com у папці /etc/nginx/sites-available/ та налаштуйте його відповідно до найкращих практик nginx для безпеки та оптимізації продуктивності:
# Перенаправлення з IPv4-адреси на домен
server {
listen 80;
server_name 0.0.0.0; # Ваша IPv4-адреса
return 301 https://domain.com$request_uri; # Перенаправлення на ваш domain.com
}
# Перенаправлення з IPv6-адреси на домен
server {
listen [1:1:1:1:1:1:1:1]:80; # Ваша IPv6-адреса
return 301 https://domain.com$request_uri; # Перенаправлення на ваш domain.com
}
# Перенаправлення з www на без-www для HTTP-трафіку
server {
listen 80;
server_name www.domain.com; # домен з www
return 301 https://domain.com$request_uri; # Перенаправлення з www на без-www
}
# Головний блок сервера для вашого домену
server {
listen 80;
server_name domain.com; # Ваше доменне ім'я
return 301 https://domain.com$request_uri; # Примусове використання HTTPS
}
# Блок сервера для обробки HTTPS
server {
listen 443 ssl http2; # HTTPS + Увімкнення HTTP/2 покращує продуктивність шляхом мультиплексування декількох запитів через одне з'єднання, зменшуючи затримку та пропонуючи інші переваги.
server_name domain.com; # Домен без www
ssl_certificate /etc/ssl/certificate.crt; # Ваш сертифікат
ssl_certificate_key /etc/ssl/private.key; # Ваш приватний ключ
ssl_trusted_certificate /etc/ssl/ca_bundle.crt; # Ваш CA bundle
root /var/www/domain.com; # Ваш кореневий каталог документа
index index.php index; # Переконайтеся, що index.php включено
# Обробка помилок
error_page 404 /404; # Власна сторінка помилки 404
location = /404 {
root /var/www/domain.com; # Розташування сторінки помилки 404
internal; # Позначає її як внутрішню, щоб користувачі не могли отримати до неї прямий доступ
}
location ~ \.php$ {
include snippets/fastcgi-php.conf; # Включає фрагменти конфігурації PHP
fastcgi_pass unix:/var/run/php/php-fpm.sock; # Перенаправлення PHP-запитів до PHP-FPM
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # Необхідно для правильної роботи PHP
include fastcgi_params; # Включає стандартні параметри fastcgi
}
# Кешувати CSS, JS, зображення, шрифти та HTML-файли на 30 днів
location ~* \.(css|js|jpg|jpeg|png|gif|ico|svg|webp|woff|woff2|ttf|eot|html)$ {
expires 30d;
add_header Cache-Control "public";
}
# Необов'язково: Налаштуйте розмір завантаження клієнта, якщо необхідно
client_max_body_size 10M; # Встановити максимальний розмір завантаження 10 МБ - Дотримуючись найкращих практик завантаження файлів
}
# Блок сервера для обробки HTTPS для www
server {
listen 443 ssl; # HTTPS
server_name www.domain.com; # домен з www
ssl_certificate /etc/ssl/certificate.crt; # Ваш сертифікат
ssl_certificate_key /etc/ssl/private.key; # Ваш приватний ключ
ssl_trusted_certificate /etc/ssl/ca_bundle.crt; # Ваш CA bundle
return 301 https://domain.com$request_uri; # Перенаправлення з www на без-www
}
ВАЖЛИВО! Замініть domain.com на ваше доменне ім'я (Приклад: kolodych.com, abc.org, petsof.net)
Замініть 0.0.0.0 на вашу реальну IPv4-адресу. Ви можете знайти її за допомогою команди ifconfig або ip a, або перевіривши деталі вашого сервера.
Замініть або видаліть 1:1:1:1:1:1:1:1 — вкажіть вашу реальну IPv6-адресу (якщо застосовується).
Налаштування SSL-сертифіката
Отримайте SSL-сертифікати від провайдера (наприклад, ZeroSSL або Let's Encrypt). Завантажте їх у папку /etc/ssl/. Відповідно до найкращих практик TLS для nginx 2024 та nginx ssl_prefer_server_ciphers best practice 2024, переконайтеся, що наступні шляхи правильні:
- /etc/ssl/certificate.crt (SSL-сертифікат)
- /etc/ssl/private.key (Приватний ключ)
- /etc/ssl/ca_bundle.crt (CA-пакет)
Дотримуючись наведених кроків, ви зможете встановити Nginx та налаштувати SSL, оптимізуючи ваш сервер для продуктивності та безпеки з принципами правильного посібника з безпечного налаштування nginx.
Завантажте ваш index та інші ресурси сайту у папку /var/www/your-domain.com
Тестування та перезавантаження nginx
Перевірте конфігурацію Nginx на синтаксичні помилки за допомогою команд nginx:
sudo nginx -t
Якщо помилок немає, перезавантажте Nginx для застосування змін та прискорення nginx:
sudo systemctl reload nginx
Крок 3*: Налаштування обмежень завантаження файлів (client_max_body_size)
За замовчуванням Nginx обмежує завантаження файлів до 1 МБ (у кроці 3 — конфігурація файлу domain.com вже налаштована на 10 МБ). Якщо це призводить до помилок "413 Request Entity Too Large" при спробі користувачів завантажити зображення, документи або медіафайли — виправимо це зараз:
Яке найкраще налаштування client_max_body_size?
Єдиного правильного значення не існує — оптимальний client_max_body_size залежить
від
вашого сценарію використання:
- За замовчуванням (1 МБ): Підходить для простих сайтів лише з формами
- 5 МБ-10 МБ: Стандарт для блогів, бізнес-сайтів із завантаженням зображень
- 20 МБ-50 МБ: Інтернет-магазини, завантаження профільних фото, керування документами
- 100 МБ-500 МБ: Медіасайти, галереї з зображеннями у високій роздільній здатності, PDF-репозиторії
- 1 ГБ-2 ГБ: Відеоплатформи, сервіси обміну великими файлами, системи резервного копіювання
Рекомендована конфігурація:
# Глобальне значення за замовчуванням (консервативне)
http {
client_max_body_size 10M;
# Конкретне розташування (location) для завантаження файлів
server {
listen 80;
server_name example.com;
# Більшість сторінок використовують 10 МБ за замовчуванням
# API кінцева точка для завантаження файлів
location /api/upload {
client_max_body_size 100M;
}
# Панель адміністратора для керування медіафайлами
location /admin/media {
client_max_body_size 500M;
}
# Кінцева точка для завантаження відео
location /videos/upload {
client_max_body_size 2G;
}
}
# Або використовуйте окремі блоки сервера для різних піддоменів
# Піддомен API - завантаження великих файлів
server {
listen 443 ssl http2;
server_name api.yourdomain.com;
client_max_body_size 100M;
}
# Статичний блог - мінімальні завантаження
server {
listen 443 ssl http2;
server_name blog.yourdomain.com;
client_max_body_size 5M;
}
}
Рекомендації для типових сценаріїв:
- WordPress-сайти: 64 МБ-100 МБ (обробка завантажень до медіатеки, встановлення плагінів/тем)
- REST API: 5 МБ-10 МБ (JSON-навантаження зазвичай невеликі)
- Платформи обміну файлами: 500 МБ-2 ГБ (залежить від максимального дозволеного розміру файлу)
- Контактні форми: 5 МБ (достатньо для невеликих вкладень)
- Платформи електронного навчання: 250 МБ-500 МБ (навчальні матеріали, презентації, відео)
⚠️ Міркування щодо безпеки:
- Не встановлюйте занадто велике значення глобально — це відкриває вас до DoS-атак (завантаження масивних файлів)
- Використовуйте обмеження для конкретних location, щоб обмежити великі завантаження лише певними кінцевими точками
- Поєднуйте з обмеженням швидкості для запобігання зловживанням
- Відстежуйте дисковий простір — великі завантаження потребують ємності сховища
- Розгляньте використання
client_body_timeoutдля запобігання атакам повільного завантаження
Тестування вашого налаштування:
- Завантажте файл найбільшого очікуваного типу
- Якщо ви отримуєте помилку
413 Request Entity Too Large, збільшіть ліміт - Встановіть ліміт на 20-30% вище за максимальний очікуваний розмір файлу
- Перевірте за допомогою
nginx -tперед перезавантаженням:nginx -s reload
Пов'язані налаштування: Також налаштуйте client_body_buffer_size
(за замовчуванням 16k) та client_body_timeout (за замовчуванням 60s) для
оптимальної продуктивності
при великих завантаженнях.
Крок 4: Налаштування файлу .htaccess
Для підвищення безпеки та продуктивності налаштуйте ваш файл .htaccess відповідно до найкращих практик gzip-конфігурації nginx та стратегій кешування для оптимізації nginx:
ErrorDocument 404 /404.html # Власна сторінка для помилок 404
AddDefaultCharset UTF-8 # Встановлює кодування символів за замовчуванням для вашого сайту на UTF-8
RewriteEngine On # Це активує рушій mod_rewrite, дозволяючи використовувати перезапис URL-адрес
# Примусове використання HTTPS
RewriteCond %{HTTPS} off # Це перевіряє, чи не використовується HTTPS з'єднання
RewriteRule ^(.*)$ https://domain.com$1 [L,R=301] # Перенаправляє HTTP-запити на HTTPS для безпечного з'єднання
# Перенаправлення IPv4-адреси на домен
RewriteCond %{HTTP_HOST} ^0.0.0.0$ [OR] # Це перевіряє, чи надходить запит на вашу IPv4-адресу
RewriteRule ^(.*)$ https://domain.com$1 [L,R=301] # Перенаправляє будь-які запити з IP-адрес на ваш домен
# Необов'язково: Перенаправлення з www на без-www
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] # Це перевіряє, чи починається URL-адреса з "www." (незалежно від регістру)
RewriteRule ^(.*)$ https://domain.com$1 [L,R=301] # Перенаправляє будь-які запити "www" на версію без www для вашого домену, зберігаючи решту URL-адреси
# Gzip-стиснення
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css # Стискає HTML, звичайний текст, XML та CSS-файли для швидшого завантаження
AddOutputFilterByType DEFLATE application/javascript application/x-javascript application/xml # Стискає файли JavaScript та XML
AddOutputFilterByType DEFLATE image/svg+xml # Стискає SVG-зображення
AddOutputFilterByType DEFLATE application/rss+xml application/atom_xml # Стискає стрічки RSS та Atom
AddOutputFilterByType DEFLATE application/x-font-ttf application/x-font-opentype application/vnd.ms-fontobject # Стискає файли шрифтів
BrowserMatch ^Mozilla/4 gzip-only-text/html # Запобігає використанню gzip-стиснення старішими браузерами
BrowserMatch ^Mozilla/4\.0[678] no-gzip # Запобігає використанню gzip-стиснення старішими браузерами
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html # Запобігає виключенню старіших версій Internet Explorer з gzip-стиснення
Header append Vary User-Agent # Гарантує, що стиснуті файли надсилаються відповідно до user-agent
</IfModule>
# Управління кешем
<IfModule mod_expires.c>
ExpiresActive On # Вмикає кешування для статичних файлів
# Час кешування за замовчуванням
ExpiresDefault "access plus 1 day" # Час кешування за замовчуванням становить 1 день для всіх файлів
ExpiresByType text/css "access plus 1 day" # Кешувати CSS-файли на 1 день
# Кешувати зображення (JPEG, PNG, GIF, WebP, SVG) на 1 рік
ExpiresByType image/jpeg "access plus 1 year" # Кешувати JPEG-зображення на 1 рік
ExpiresByType image/png "access plus 1 year" # Кешувати PNG-зображення на 1 рік
ExpiresByType image/gif "access plus 1 year" # Кешувати GIF-зображення на 1 рік
ExpiresByType image/webp "access plus 1 year" # Кешувати WebP-зображення на 1 рік
ExpiresByType image/svg+xml "access plus 1 year" # Кешувати SVG-зображення на 1 рік
# Кешувати відеофайли (MP4, WebM, OGG, Quicktime) на 1 рік
ExpiresByType video/mp4 "access plus 1 year" # Кешувати MP4 відеофайли на 1 рік
ExpiresByType video/webm "access plus 1 year" # Кешувати WebM відеофайли на 1 рік
ExpiresByType video/ogg "access plus 1 year" # Кешувати OGG відеофайли на 1 рік
ExpiresByType video/quicktime "access plus 1 year" # Кешувати Quicktime відеофайли на 1 рік
# Кешувати файли JavaScript на 1 рік
ExpiresByType application/javascript "access plus 1 year" # Кешувати файли JavaScript на 1 рік
ExpiresByType application/x-javascript "access plus 1 year" # Кешувати файли X-JavaScript на 1 рік
ExpiresByType application/pdf "access plus 1 year" # Кешувати файли PDF на 1 рік
# Кешувати шрифти на 1 рік
ExpiresByType font/ttf "access plus 1 year" # Кешувати файли шрифтів TTF на 1 рік
ExpiresByType font/otf "access plus 1 year" # Кешувати файли шрифтів OTF на 1 рік
ExpiresByType font/woff "access plus 1 year" # Кешувати файли шрифтів WOFF на 1 рік
ExpiresByType font/woff2 "access plus 1 year" # Кешувати файли шрифтів WOFF2 на 1 рік
</IfModule>
# Заголовки управління кешем (для браузерів та CDN)
<IfModule mod_headers.c>
# Кешувати CSS-файли на 1 день
<FilesMatch "\.(css)$">
Header set Cache-Control "max-age=86400, public" # Встановлює кеш для CSS-файлів на 1 день
</FilesMatch>
# Кешувати зображення на 1 рік
<FilesMatch "\.(jpg|svg|jpeg|png|gif|webp)$">
Header set Cache-Control "max-age=31536000, public" # Встановлює кеш для файлів зображень на 1 рік
</FilesMatch>
# Кешувати відеофайли на 1 рік
<FilesMatch "\.(mp4|webm|ogg|mov)$">
Header set Cache-Control "max-age=31536000, public" # Встановлює кеш для відеофайлів на 1 рік
</FilesMatch>
# Кешувати файли JavaScript на 1 рік
<FilesMatch "\.(js)$">
Header set Cache-Control "max-age=31536000, public" # Встановлює кеш для файлів JavaScript на 1 рік
</FilesMatch>
# Кешувати файли PDF на 1 рік
<FilesMatch "\.(pdf)$">
Header set Cache-Control "max-age=31536000, public" # Встановлює кеш для PDF-файлів на 1 рік
</FilesMatch>
# Кешувати шрифти на 1 рік
<FilesMatch "\.(ttf|otf|woff|woff2)$">
Header set Cache-Control "max-age=31536000, public" # Встановлює кеш для файлів шрифтів на 1 рік
</FilesMatch>
</IfModule>
# Заголовок Strict-Transport-Security (HSTS) є критичною функцією безпеки для веб-сайтів, що обслуговуються через HTTPS.
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains" # Гарантує примусове використання HTTPS для всіх піддоменів протягом 1 року
</IfModule>
ВАЖЛИВО! Замініть domain.com на ваше реальне доменне ім'я (Приклад: kolodych.com, abc.org, petsof.net).
Замініть 0.0.0.0 на вашу реальну IPv4-адресу. Ви можете знайти її за допомогою команди ifconfig або ip a, або перевіривши деталі вашого сервера.
Переконайтеся, що ваші DNS-налаштування вказують на правильну IP-адресу для вашого домену. Ви можете налаштувати DNS через панель управління вашого хостинг-провайдера.
Крок 5: Приклад файлу robots.txt
Забезпечте SEO-дружність вашого сайту, налаштувавши файл robots.txt:
User-agent: *
Disallow: /private/
Allow: /public/
Sitemap: https://domain.com/sitemap.xml
ВАЖЛИВО! Замініть domain.com на ваше реальне доменне ім'я (Приклад: kolodych.com, abc.org, petsof.net).
Крок 6: Приклад XML-карти сайту
Перш ніж запитувати індексацію для вашого сайту, переконайтеся, що файл карти сайту є останнім елементом, який ви створюєте, підтвердивши, що всі налаштування та сторінки завершені. Ось приклад форматування карти сайту для оптимальної індексації пошуковими системами:
<?xml version="1.0" encoding="UTF-8"?> <!-- XML-декларація -->
<urlset xmlns="https://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" xmlns:image="https://www.google.com/schemas/sitemap-image/1.1" xmlns:video="https://www.google.com/schemas/sitemap-video/1.1" xsi:schemaLocation="https://www.sitemaps.org/schemas/sitemap/0.9 https://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"> <!-- Декларація набору URL-адрес -->
<!-- Створено за допомогою безкоштовного онлайн-генератора карт сайтів www.xml-sitemaps.com --> <!-- Коментар генератора карти сайту -->
<url> <!-- Початок запису URL-адреси -->
<loc>https://domain.com/</loc> <!-- URL-адреса головної сторінки -->
<lastmod>2024-08-13T12:36:05+00:00</lastmod> <!-- Дата останньої модифікації -->
<priority>1.00</priority> <!-- Пріоритет = 1.00 ТІЛЬКИ для головної сторінки -->
</url> <!-- Кінець запису URL-адреси -->
<url> <!-- Початок іншого запису URL-адреси -->
<loc>https://domain.com/page1</loc> <!-- URL-адреса сторінки 1 -->
<lastmod>2024-10-24T04:19:18+00:00</lastmod> <!-- Дата останньої модифікації -->
<priority>0.80</priority> <!-- Пріоритет = 0.8-0.9 для важливих сторінок, таких як Послуги, Категорії -->
<changefreq>monthly</changefreq> <!-- Частота змін від 'ніколи', 'щорічно', 'щомісяця', 'щотижня'... -->
<image:image> <!-- Початок зображення -->
<image:loc>https://domain.com/images/image1.webp</image:loc> <!-- Розташування зображення -->
<image:caption>image_caption_text_here</image:caption> <!-- Підпис до зображення -->
<image:title>Image_title_goes_here</image:title> <!-- Назва зображення -->
</image:image> <!-- Кінець зображення -->
</url> <!-- Кінець запису URL-адреси -->
<url> <!-- Початок іншого запису URL-адреси -->
<loc>https://domain.com/page2</loc> <!-- URL-адреса сторінки 2 -->
<lastmod>2024-08-04</lastmod> <!-- Дата останньої модифікації -->
<priority>0.6-0.7</priority> <!-- Пріоритет = 0.6-0.7 для сторінок, що часто оновлюються, як-от статті блогу -->
<changefreq>monthly</changefreq> <!-- Частота змін ... до 'щодня', 'щогодини', 'завжди' для живих новин -->
</url> <!-- Кінець запису URL-адреси -->
<!-- Додайте тут інші URL-адреси для додаткових сторінок --> <!-- Коментар для додавання додаткових URL-адрес -->
</urlset> <!-- Кінець набору URL-адрес -->
ВАЖЛИВО! Замініть domain.com на ваше доменне ім'я (Приклад: kolodych.com, abc.org, petsof.net), а також перевірте всі значення https://, page1, page2, image1, image_caption_text_here та інші...
Часті запитання щодо налаштування Nginx
- Як оптимізувати nginx для високого трафіку?
-
Щоб оптимізувати nginx для високого трафіку, збільшіть worker_connections (2048+), увімкніть HTTP/2, реалізуйте FastCGI-кешування, використовуйте gzip-стиснення, оптимізуйте розміри буферів та налаштуйте відповідні тайм-аути. Такий підхід до конфігурації nginx під велике навантаження забезпечує мінімальну затримку nginx. Відстежуйте ресурси сервера та коригуйте налаштування nginx відповідно до реальних патернів трафіку для безперервного тюнінгу продуктивності nginx.
- Які мінімальні вимоги nginx?
-
Мінімальні вимоги nginx досить скромні: 512 МБ RAM, 1 ядро CPU та 10 ГБ сховища. Однак для продакшн-середовищ, що вимагають продуктивності nginx та правильного розміру nginx, рекомендується мінімум 1 ГБ RAM, 2 ядра CPU та SSD-сховище для оптимальної роботи.
- Де знаходиться файл конфігурації nginx?
-
Основний файл конфігурації nginx знаходиться за адресою /etc/nginx/nginx.conf. Конфігурації віртуальних хостів зазвичай зберігаються у /etc/nginx/sites-available/ та вмикаються через символічні посилання у /etc/nginx/sites-enabled/. Розуміння цих розташувань файлів є необхідним для керування конфігурацією nginx.
- Як увімкнути HTTP/2 в nginx?
-
Щоб увімкнути HTTP/2 в nginx, додайте http2 до директиви listen: listen 443 ssl http2;. HTTP/2 вимагає SSL/TLS, тому переконайтеся, що у вас налаштовані дійсні сертифікати відповідно до найкращих практик TLS для nginx 2024. Це значно покращує продуктивність nginx для сучасних браузерів та допомагає пришвидшити nginx час відповіді.
- Які найкращі практики безпеки nginx?
-
Найкращі практики безпеки nginx включають: приховання номерів версій (server_tokens off), реалізацію обмеження швидкості, використання лише сучасних протоколів TLS (TLSv1.2+) відповідно до nginx ssl_prefer_server_ciphers best practice 2024, додавання заголовків безпеки (X-Frame-Options, CSP), увімкнення HSTS, регулярні оновлення та належний моніторинг журналів. Дотримуйтесь цього посібника з безпечного налаштування nginx для комплексного захисту та регулярно переглядайте поради з безпеки nginx.
- Як перевірити конфігурацію nginx на помилки?
-
Використовуйте sudo nginx -t для перевірки конфігурації nginx на синтаксичні помилки перед застосуванням змін. Ця команда перевіряє ваші файли конфігурації та повідомляє про будь-які проблеми, надаючи необхідну допомогу nginx під час налаштування. Завжди тестуйте перед перезавантаженням з sudo systemctl reload nginx, щоб дотримуватись найкращих практик конфігурації nginx.
- Як покращити продуктивність nginx?
-
Покращіть продуктивність nginx за допомогою: оптимізації робочих процесів, увімкнення стиснення з використанням найкращих практик gzip-конфігурації nginx, реалізації кешування (FastCGI, браузер), оптимізації розмірів буферів, включаючи client_max_body_size, використання HTTP/2, встановлення відповідних тайм-аутів, ефективного обслуговування статичного контенту та впровадження CDN. Регулярний тюнінг продуктивності nginx та тюнінг nginx на основі аналізу трафіку є необхідним для оптимізації nginx.
- Яке найкраще налаштування client_max_body_size?
-
Залежить від вашого сценарію: 10 МБ для базових сайтів, 64 МБ-100 МБ для WordPress, 500 МБ-2 ГБ для відеоплатформ. Дивіться наш повний посібник з налаштування client_max_body_size у кроці 3* для детальних рекомендацій та прикладів коду.
- У чому різниця між nginx та Apache?
-
Nginx використовує подієво-орієнтовану архітектуру з нижчим споживанням ресурсів та кращою продуктивністю nginx для статичного контенту та високої паралельності, що робить його ідеальним, коли вам потрібно оптимізувати nginx. Apache використовує процесно-орієнтовану модель, краще підходить для динамічного контенту та підтримки .htaccess. Nginx вимагає прямого редагування файлів конфігурації nginx, тоді як Apache дозволяє використовувати файли .htaccess на рівні директорій. Для серверів з високою продуктивністю, nginx зазвичай пропонує кращі характеристики затримки nginx.
Висновок: опанування налаштування Nginx для пікової продуктивності
Цей вичерпний посібник з nginx охопив все — від базового встановлення до розширених технік оптимізації nginx. Дотримуючись цих найкращих практик nginx та реалізуючи правильну конфігурацію nginx, ви можете побудувати високопродуктивний, захищений веб-сервер, здатний обробляти значний трафік з мінімальною затримкою nginx.
Ключові висновки
- Продуктивність Nginx: Правильна конфігурація робочих процесів, буферів та кешування кардинально покращує продуктивність. Використовуйте цей посібник із тюнінгу продуктивності nginx для швидкого старту оптимізації nginx.
- Безпека перш за все: Реалізуйте найкращі практики безпеки nginx, включаючи сучасний TLS відповідно до найкращих практик TLS для nginx 2024 та nginx ssl_prefer_server_ciphers best practice 2024, заголовки безпеки та обмеження швидкості. Використовуйте цей посібник з безпечного налаштування nginx з порадами з безпеки nginx.
- Регулярне обслуговування: Тестуйте конфігурації за допомогою команд nginx, відстежуйте статус nginx та тримайте nginx оновленим для оптимальної роботи.
- Оптимізація: Використовуйте HTTP/2, реалізуйте найкращі практики gzip-конфігурації nginx, та належне кешування, щоб оптимізувати nginx та пришвидшити nginx для кращого досвіду користувача.
- Керування конфігурацією: Тримайте вашу конфігурацію nginx організованою, задокументованою та під контролем версій відповідно до найкращих практик конфігурації nginx та найкращих практик налаштування nginx 2025.
Незалежно від того, чи керуєте ви сайтом малого бізнесу, чи готуєтесь до оптимізації nginx під додатки з високим трафіком з конфігурацією nginx під велике навантаження, цей посібник надає основу для успішного розгортання nginx. Пам'ятайте постійно відстежувати продуктивність, коригувати налаштування nginx на основі реального використання відповідно до цього посібника з розмірів nginx та залишатися в курсі останньої документації nginx та бюлетенів безпеки.
Для тих, хто будує високопродуктивні сервери з нуля на основах nginx, цей посібник з налаштування nginx пропонує повну дорожню карту — від розуміння мінімальних вимог nginx та розмірів nginx до реалізації розширеного тюнінгу nginx та стратегій оптимізації конфігурації nginx. Дотримуйтесь цих найкращих практик nginx крок за кроком для оптимальних результатів.