Nginx может отдавать статический контент с высокой скоростью.
Пример конфигурации:
server { listen 80; server_name example.com; root /var/www/html; location / { index index.html; } }
При обращении к example.com
Nginx будет отдавать файлы из /var/www/html
.
Nginx перенаправляет запросы на бэкенд-серверы (например, Node.js или Apache).
Пример:
server { listen 80; server_name api.example.com; location / { proxy_pass http://localhost:3000; // Перенаправляет на Node.js-сервер proxy_set_header Host $host; } }
Распределение запросов между несколькими серверами.
Пример:
upstream backend { server 192.168.1.10:8000; server 192.168.1.11:8000; server 192.168.1.12:8000 backup; // Резервный сервер } server { location / { proxy_pass http://backend; } }
Запросы распределяются между тремя серверами по алгоритму round-robin
.
Ускорение работы сайта за счёт кеширования ответов бэкенда.
Пример:
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m; server { location / { proxy_cache my_cache; proxy_pass http://backend; proxy_cache_valid 200 302 10m; // Кеширует ответы 200 и 302 на 10 минут } }
Ускорение загрузки страниц за счёт современных протоколов.
Пример:
server { listen 443 ssl http2; // Включает HTTP/2 listen 443 quic reuseport; // Экспериментальная поддержка HTTP/3 (QUIC) ssl_certificate /etc/nginx/ssl/cert.pem; ssl_certificate_key /etc/nginx/ssl/key.pem; }
Ограничение доступа по IP:
location /admin { allow 192.168.1.100; deny all; // Блокирует всех, кроме указанного IP }
Rate Limiting (защита от DDoS):
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s; server { location / { limit_req zone=one burst=20; // Не более 10 запросов в секунду } }
Хостинг нескольких сайтов на одном сервере.
Пример:
server { listen 80; server_name site1.com; root /var/www/site1; } server { listen 80; server_name site2.com; root /var/www/site2; }
Проксирование WebSocket-соединений.
Пример:
location /chat { proxy_pass http://backend; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; }
Gzip-сжатие:
gzip on; gzip_types text/plain text/css application/json;
Brotli (если модуль установлен):
brotli on; brotli_types text/html text/plain text/css;
Редирект с HTTP на HTTPS:
server { listen 80; server_name example.com; return 301 https://$host$request_uri; }
Rewrite для «красивых» URL:
location /blog { rewrite ^/blog/(.*)$ /index.php?page=$1 last; }
Настройка access.log:
access_log /var/log/nginx/access.log combined;
Формат combined
включает IP, дату, метод запроса и User-Agent.
Обработка PHP:
location ~ \.php$ { fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; fastcgi_index index.php; include fastcgi_params; }
Блокировка трафика по стране:
geoip_country /usr/share/GeoIP/GeoIP.dat; map $geoip_country_code $allowed_country { default no; US yes; // Разрешить только США } server { if ($allowed_country = no) { return 403; } }
Ограничение скорости загрузки:
location /download { limit_rate 100k; // Ограничение скорости до 100 КБ/с }
Пример:
server { listen [::]:80 ipv6only=on; }
Пример Lua-скрипта:
location /test { content_by_lua_block { ngx.say("Hello from Lua!") } }
Стриминг MP4:
location /videos { mp4; mp4_buffer_size 1m; }
JWT-аутентификация:
location /secure { auth_jwt "Restricted Area"; auth_jwt_key_file /etc/nginx/jwt_keys/secret.jwk; }