Шукаєте вичерпний посібник з 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 проти інших веб-серверів: порівняння продуктивності
Характеристика Nginx Apache Microsoft Google 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.
  • Бюджетні варіанти:
    • Hostinger — приблизно 40 USD на рік + 1 безкоштовний домен при використанні ПРОМОКОДУ = HIPSERGEYPBG
    • Zomro — знижка від 15% до 40%, використовуючи ПРОМОКОД = zomro_379593
    • Kamatera

Мінімальні вимоги 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:

Перевірка статусу nginx:
sudo systemctl status nginx

Запуск nginx:
sudo systemctl start nginx

Зупинка nginx:
sudo systemctl stop nginx

Перезапуск nginx:
sudo systemctl restart nginx

Перезавантаження nginx (без розриву з'єднань):
sudo systemctl reload nginx

Увімкнення автозапуску nginx при завантаженні:
sudo systemctl enable nginx

Розуміння файлів конфігурації Nginx

Файл конфігурації nginx зазвичай знаходиться за адресою /etc/nginx/nginx.conf. Саме тут ви налаштовуєте глобальні параметри nginx, як-от робочі процеси, з'єднання, логування та протоколи SSL для тюнінгу продуктивності nginx та оптимізації nginx.

Найкращі практики SSL у Nginx 2024-2026: налаштування TLS

Ось оптимізований приклад основного конфігураційного файлу nginx з детальними поясненнями. Ця конфігурація відповідає найкращим практикам налаштування nginx та актуальним найкращим практикам nginx щодо безпеки та продуктивності:

nginx.conf
events {
    worker_connections 1024;  # Max simultaneous connections per worker process. You can adjust this based on traffic needs.
    }
    
http {
    sendfile on;  # Enables efficient file transfers. Leave enabled for serving static files.
    tcp_nopush on;  # Optimizes TCP packets for sending large files. Leave as is unless specific requirements suggest otherwise.
    types_hash_max_size 2048;  # Limits the maximum size of the hash table for MIME types. Usually, the default value is sufficient.
    include /etc/nginx/mime.types;  # Includes the MIME types configuration file that maps file extensions to MIME types. Leave as is.
    default_type application/octet-stream;  # Default MIME type for files that don't have a specific MIME type. Leave as is unless you need to specify something else.
    
    # SSL Settings
ssl_protocols TLSv1.2 TLSv1.3; # Enforces modern TLS protocols. Keep this for security purposes. ssl_prefer_server_ciphers on; # Ensures the server's ciphers are preferred for secure connections. Leave as is. ssl_session_cache shared:SSL:10m; # Enables caching of SSL sessions to improve performance on subsequent connections. ssl_session_timeout 10m; # Sets the session cache timeout to 10 minutes. This is fine for most use cases. ssl_ciphers 'HIGH:!aNULL:!MD5'; # Specifies strong ciphers for SSL/TLS. Leave as is unless you need a specific set. # Security Headers
add_header X-Content-Type-Options nosniff; # Prevents browsers from interpreting files as a different MIME type. Keep for security. add_header X-Frame-Options DENY; # Prevents the site from being displayed in iframes. Keep for security unless needed otherwise. add_header X-XSS-Protection "1; mode=block"; # Protects against cross-site scripting (XSS) attacks. Keep for security. server_tokens off; # Hides Nginx version information. Keep as is to avoid revealing server details. # Logging Settings
access_log /var/log/nginx/access.log; # Defines where to log access requests. Keep unless you want to change the log location. error_log /var/log/nginx/error.log; # Defines where to log error messages. Keep unless you need to change the log location. # Gzip Settings
gzip on; # Enables Gzip compression for better performance. Keep enabled for most sites to reduce data size. gzip_vary on; # Informs proxies that the response varies based on the request's Accept-Encoding header. gzip_proxied any; # Enables Gzip for all proxied requests. Keep as is unless a specific case requires modification. gzip_comp_level 6; # Defines the compression level. Level 6 is a good balance between speed and compression. gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript; # Specifies file types to compress. These are common types that benefit from compression. Adjust as needed based on your site’s content. # Include virtual host configurations
include /etc/nginx/sites-enabled/*; # Includes all the configurations from the sites-enabled directory. Keep enabled unless you have a specific reason to disable it. }

Порада: Просто скопіюйте та вставте це у /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 для безпеки та оптимізації продуктивності:

domain.com
# Redirect from IPv4 address to the domain
server {
    listen 80;
    server_name 0.0.0.0;  # Your IPv4 address
    return 301 https://domain.com$request_uri;  # Redirect to your domain.com
}

# Redirect from IPv6 address to the domain
server {
    listen [1:1:1:1:1:1:1:1]:80;  # Your IPv6 address
    return 301 https://domain.com$request_uri;  # Redirect to your domain.com
}

# Redirect from www to non-www for HTTP traffic
server {
    listen 80;
    server_name www.domain.com;  # www domain
    return 301 https://domain.com$request_uri;  # Redirect www to non-www
}

# Main server block for your domain
server {
    listen 80;
    server_name domain.com;  # Your domain name
    return 301 https://domain.com$request_uri;  # Force HTTPS
}

# Server block for handling HTTPS
server {
    listen 443 ssl http2;  # HTTPS + Enable HTTP/2 improves performance by multiplexing multiple requests over a single connection, reducing latency, and offering other benefits.
    server_name domain.com;  # Non-www domain

    ssl_certificate /etc/ssl/certificate.crt;  # Your certificate
    ssl_certificate_key /etc/ssl/private.key;   # Your private key
    ssl_trusted_certificate /etc/ssl/ca_bundle.crt;  # Your CA bundle

    root /var/www/domain.com;  # Your document root
index index.php index; # Ensure index.php is included # Error handling error_page 404 /404; # Custom 404 error page location = /404 { root /var/www/domain.com; # Location of the 404 error page internal; # Marks it as internal, so users can't access it directly } location ~ \.php$ { include snippets/fastcgi-php.conf; # Includes PHP configuration snippets fastcgi_pass unix:/var/run/php/php-fpm.sock; # Pass PHP requests to PHP-FPM fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # Required for PHP to work correctly include fastcgi_params; # Includes standard fastcgi parameters } # Cache CSS, JS, images, fonts, and HTML files for 30 days location ~* \.(css|js|jpg|jpeg|png|gif|ico|svg|webp|woff|woff2|ttf|eot|html)$ { expires 30d; add_header Cache-Control "public"; } # Optional: Adjust client upload size if necessary client_max_body_size 10M; # Set maximum upload size to 10MB - Following the Best Practices for File Uploads } # Server block for handling HTTPS for www server { listen 443 ssl; # HTTPS server_name www.domain.com; # www domain ssl_certificate /etc/ssl/certificate.crt; # Your certificate ssl_certificate_key /etc/ssl/private.key; # Your private key ssl_trusted_certificate /etc/ssl/ca_bundle.crt; # Your CA bundle return 301 https://domain.com$request_uri; # Redirect www to non-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:

Перезавантаження 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 ГБ: Відеоплатформи, сервіси обміну великими файлами, системи резервного копіювання

Рекомендована конфігурація:

Рекомендовані налаштування client_max_body_size
# Global default (conservative)
http {
    client_max_body_size 10M;
    
    # Specific location for file uploads
    server {
        listen 80;
        server_name example.com;
        
        # Most pages use default 10Mb
        
        # API endpoint for file uploads
        location /api/upload {
            client_max_body_size 100M;
        }
        
        # Admin panel for media management
        location /admin/media {
            client_max_body_size 500M;
        }
        
        # Video upload endpoint
        location /videos/upload {
            client_max_body_size 2G;
        }
    }
    # Or use separate server blocks for different subdomains
    
    # API subdomain - large file uploads
    server {
        listen 443 ssl http2;
        server_name api.yourdomain.com;
        client_max_body_size 100M;
    }
    
    # Static blog - minimal uploads
    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 для запобігання атакам повільного завантаження

Тестування вашого налаштування:

  1. Завантажте файл найбільшого очікуваного типу
  2. Якщо ви отримуєте помилку 413 Request Entity Too Large, збільшіть ліміт
  3. Встановіть ліміт на 20-30% вище за максимальний очікуваний розмір файлу
  4. Перевірте за допомогою nginx -t перед перезавантаженням: nginx -s reload

Пов'язані налаштування: Також налаштуйте client_body_buffer_size (за замовчуванням 16k) та client_body_timeout (за замовчуванням 60s) для оптимальної продуктивності при великих завантаженнях.

Крок 4: Налаштування файлу .htaccess

Для підвищення безпеки та продуктивності налаштуйте ваш файл .htaccess відповідно до найкращих практик gzip-конфігурації nginx та стратегій кешування для оптимізації nginx:

.htaccess
ErrorDocument 404 /404.html # Custom error page for 404 errors

AddDefaultCharset UTF-8 # Sets the default character encoding for your website to UTF-8

RewriteEngine On # This activates the mod_rewrite engine, enabling the use of URL rewrites

# Force HTTPS
RewriteCond %{HTTPS} off # This checks if the connection is not using HTTPS
RewriteRule ^(.*)$ https://domain.com$1 [L,R=301] # Redirects HTTP requests to HTTPS for a secure connection

# Redirect IPv4 address to domain
RewriteCond %{HTTP_HOST} ^0.0.0.0$ [OR] # This checks if the request is coming to your IPv4 address
RewriteRule ^(.*)$ https://domain.com$1 [L,R=301] # Redirects any requests from the IP addresses to your domain

# Optional: Redirect from www to non-www
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] # This checks if the URL starts with "www." (case-insensitive)
RewriteRule ^(.*)$ https://domain.com$1 [L,R=301] # Redirects any "www" requests to the non-www version of your domain, maintaining the rest of the URL

# Gzip Compression
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css # Compresses HTML, plain text, XML, and CSS files for faster loading
    AddOutputFilterByType DEFLATE application/javascript application/x-javascript application/xml # Compresses JavaScript and XML files
    AddOutputFilterByType DEFLATE image/svg+xml # Compresses SVG images
    AddOutputFilterByType DEFLATE application/rss+xml application/atom_xml # Compresses RSS and Atom feeds
    AddOutputFilterByType DEFLATE application/x-font-ttf application/x-font-opentype application/vnd.ms-fontobject # Compresses font files
    BrowserMatch ^Mozilla/4 gzip-only-text/html # Prevents older browsers from using gzip compression
    BrowserMatch ^Mozilla/4\.0[678] no-gzip # Prevents older browsers from using gzip compression
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html # Prevents older versions of Internet Explorer from being excluded from gzip compression
    Header append Vary User-Agent # Makes sure that compressed files are sent according to the user agent
</IfModule>

# Cache Control
<IfModule mod_expires.c>
    ExpiresActive On # Enables caching for static files

    # Default cache time
    ExpiresDefault "access plus 1 day" # Default cache time is 1 day for all files

    ExpiresByType text/css "access plus 1 day" # Cache CSS files for 1 day

    # Cache images (JPEG, PNG, GIF, WebP, SVG) for 1 year
    ExpiresByType image/jpeg "access plus 1 year" # Cache JPEG images for 1 year
    ExpiresByType image/png "access plus 1 year" # Cache PNG images for 1 year
    ExpiresByType image/gif "access plus 1 year" # Cache GIF images for 1 year
    ExpiresByType image/webp "access plus 1 year" # Cache WebP images for 1 year
    ExpiresByType image/svg+xml "access plus 1 year" # Cache SVG images for 1 year
    
    # Cache video files (MP4, WebM, OGG, Quicktime) for 1 year
    ExpiresByType video/mp4 "access plus 1 year" # Cache MP4 video files for 1 year
    ExpiresByType video/webm "access plus 1 year" # Cache WebM video files for 1 year
    ExpiresByType video/ogg "access plus 1 year" # Cache OGG video files for 1 year
    ExpiresByType video/quicktime "access plus 1 year" # Cache Quicktime video files for 1 year

    # Cache JavaScript files for 1 year
    ExpiresByType application/javascript "access plus 1 year" # Cache JavaScript files for 1 year
    ExpiresByType application/x-javascript "access plus 1 year" # Cache X-JavaScript files for 1 year

    ExpiresByType application/pdf "access plus 1 year" # Cache PDF files for 1 year

    # Cache fonts for 1 year
    ExpiresByType font/ttf "access plus 1 year" # Cache TTF font files for 1 year
    ExpiresByType font/otf "access plus 1 year" # Cache OTF font files for 1 year
    ExpiresByType font/woff "access plus 1 year" # Cache WOFF font files for 1 year
    ExpiresByType font/woff2 "access plus 1 year" # Cache WOFF2 font files for 1 year
</IfModule>

# Cache Control Headers (for browsers and CDNs)
<IfModule mod_headers.c> 
    # Cache CSS files for 1 day
    <FilesMatch "\.(css)$">
        Header set Cache-Control "max-age=86400, public" # Sets cache for CSS files to 1 day
    </FilesMatch>

    # Cache images for 1 year
    <FilesMatch "\.(jpg|svg|jpeg|png|gif|webp)$">
        Header set Cache-Control "max-age=31536000, public" # Sets cache for image files to 1 year
    </FilesMatch>
    
    # Cache video files for 1 year
    <FilesMatch "\.(mp4|webm|ogg|mov)$">
        Header set Cache-Control "max-age=31536000, public" # Sets cache for video files to 1 year
    </FilesMatch>

    # Cache JavaScript files for 1 year
    <FilesMatch "\.(js)$">
        Header set Cache-Control "max-age=31536000, public" # Sets cache for JavaScript files to 1 year
    </FilesMatch>

    # Cache PDFs for 1 year
    <FilesMatch "\.(pdf)$">
        Header set Cache-Control "max-age=31536000, public" # Sets cache for PDF files to 1 year
    </FilesMatch>

    # Cache fonts for 1 year
    <FilesMatch "\.(ttf|otf|woff|woff2)$">
        Header set Cache-Control "max-age=31536000, public" # Sets cache for font files to 1 year
    </FilesMatch>
</IfModule>

# The Strict-Transport-Security (HSTS) header is a critical security feature for websites served over HTTPS.
<IfModule mod_headers.c>
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains" # Ensures HTTPS is enforced for all subdomains for 1 year
</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:

robots.txt
User-agent: *
Disallow: /private/
Allow: /public/
Sitemap: https://domain.com/sitemap.xml

ВАЖЛИВО! Замініть domain.com на ваше реальне доменне ім'я (Приклад: kolodych.com, abc.org, petsof.net).

Крок 6: Приклад XML-карти сайту

Перш ніж запитувати індексацію для вашого сайту, переконайтеся, що файл карти сайту є останнім елементом, який ви створюєте, підтвердивши, що всі налаштування та сторінки завершені. Ось приклад форматування карти сайту для оптимальної індексації пошуковими системами:

sitemap.xml
<?xml version="1.0" encoding="UTF-8"?> <!-- XML declaration -->
<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 Set Declaration -->
<!-- Created with Free Online Sitemap Generator www.xml-sitemaps.com --> <!-- Sitemap Generator Comment -->
<url> <!-- Start URL entry --> <loc>https://domain.com/</loc> <!-- Homepage URL --> <lastmod>2024-08-13T12:36:05+00:00</lastmod> <!-- Last Modified Date --> <priority>1.00</priority> <!-- Priority = 1.00 for the main page ONLY --> </url> <!-- End URL entry -->
<url> <!-- Start another URL entry --> <loc>https://domain.com/page1</loc> <!-- Page 1 URL --> <lastmod>2024-10-24T04:19:18+00:00</lastmod> <!-- Last Modified Date --> <priority>0.80</priority> <!-- Priority = 0.8-0.9 for Important pages like Services, Categories --> <changefreq>monthly</changefreq> <!-- Change Frequency from never, yearly, monthly, weekly... --> <image:image> <!-- Start Image --> <image:loc>https://domain.com/images/image1.webp</image:loc> <!-- Image Location --> <image:caption>image_caption_text_here</image:caption> <!-- Image Caption --> <image:title>Image_title_goes_here</image:title> <!-- Image Title --> </image:image> <!-- End Image --> </url> <!-- End URL entry -->
<url> <!-- Start another URL entry --> <loc>https://domain.com/page2</loc> <!-- Page 2 URL --> <lastmod>2024-08-04</lastmod> <!-- Last Modified Date --> <priority>0.6-0.7</priority> <!-- Priority = 0.6-0.7 for frequently updated pages like blog articles --> <changefreq>monthly</changefreq> <!-- Change Frequency ... till daily, hourly, always for live news --> </url> <!-- End URL entry -->
<!-- Add more URLs here for other pages --> <!-- Comment for adding more URLs --> </urlset> <!-- End URL Set -->

ВАЖЛИВО! Замініть 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 крок за кроком для оптимальних результатів.