Tool.Yun
Зручні інструменти для розробників
CSV в JSON
JS в JSON
JSON в C#
JSON в CSV
JSON в Go
JSON в JS
JSON в TOML
JSON в об'єкт
JSON до MessagePack
JSON до TS
JSON до даних
JSON у .env
JSON у Java
JSON у PHP-масив
JSON у XML
JSON у схему
Json до SQL DDL
Json на Python
Json у PHP код
Json-запит
ObjGen у JSON
PHP-масив у JSON
tools.json-patch.name
Аналізатор розміру JSON
Екранування/Розекранування JSON
Зведення/розведення JSON
Злиття JSON
Конвертер JSON в YAML
Конвертер JSON рядків
Лінтер JSON
Майстер сортування JSON
Мінімізація JSON
Пакування повідомлень у JSON
Порівняння JSON
Редактор JSON
Тестер Jq/JSONPath
Форматування JSON
PDF-компресор
PDF-конкатенер
Екстрактор сторінок PDF
Екстрактор тексту PDF
З HTML у PDF
Лінеаризація PDF/Швидкий веб
Перевірка підпису PDF
Розблокування PDF
Шифрування PDF
TOML в JSON
TOML в YAML
TOML-лінтер
ObjGen у HTML
XML у JSON
XML-лінтер
Тестер XPath
Тестер XSLT
Форматування XML
YAML в TOML
Зведення/розведення YAML
Злиття YAML
Конвертер YAML в JSON
Форматування YAML
Вибір карт
Кидок кубика
Колесо фортуни
Монетний кидок
HTML WYSIWYG редактор
HTML до даних
MIME типи
Інформація про пристрій
Генератор SVG placeholder
Генератор UTM URL
Генератор градієнтів CSS
Генератор текстових фрагментів URL
Дефангер URL
Екранування HTML сутностей
З HTML до XHTML
Зображення у CSS
Коди стану HTTP
Кодування/декодування URL-форматованих рядків
Колесо кольорів
Конвертер CSS XPath
Конвертер REM у пікселі
Конвертер кольорів
Конвертер одиниць CSS
Мініфікатор HTML
Очищувач HTML
Очищувач URL
Парсер User-agent
Перевірка контрастності кольорів
Перетворення рядка (slug)
Форматувач CSS
Форматувач HTML
Калькулятор відсотків
Калькулятор гео-дистанції
Калькулятор співвідношення сторін
Конструктор бенчмарків
Генератор BIP39 паролів
Генератор NanoID
Генератор OTP кодів
Генератор PIN-кодів
Генератор UUID
Генератор випадкових чисел
Генератор нумеронімів
Генератор паролів
Генератор паролів Diceware
Генератор токенів
Конвертер UUID
Валідатор Luhn
Валідатор номерів ПДВ
Валідатор та парсер IBAN
Валідатор та парсер ISBN
Калькулятор SLA
Калькулятор ІМТ
Калькулятор темпу бігу
Конвертер валют
Конвертер календарів
Конвертер чисел RMB
Онлайн-словник
Парсер та форматувач телефонів
Перевірка кредитних карток
Пошук Unicode
Пошук кодів країн ISO 3166
Пошуковий інструмент ISO 639
Поясніть команду оболонки
Рекомендації IES з освітлення
Сумісність ліцензій програмного забезпечення
Cron/Будильник на будні
Будильник часу
Генератор ICAL
Зворотний відлік
Калькулятор ETA
Калькулятор TTL
Калькулятор дати+тривалості
Калькулятор днів
Калькулятор тривалості
Конвертер дати та часу
Конвертер номерів тижнів
Конвертер часових поясів
Об'єднувач iCal
Парсер ICAL файлів
Хронометр
Який день?
Docker Compose у Kubernetes
Docker Compose у квадлети
Docker Compose у файл .env
Docker run у Kubernetes
Docker запуск до квадлетів
Валідатор Docker Compose
Від перевірки Docker до запуску Docker
Генератор RBAC Kubernetes
Генератор міток Dockerfile
Завантажувач образів Docker
Конвертер Docker Compose у Docker run
Конвертер Docker run в Docker compose
Конвертер формату Docker Compose
Конструктор творів у Traefik Docker
Мітки Docker Pangolin
Конструктор виразів Cron
GIF у MP4
OCR зображень та PDF
Інвертор кольору зображення
Видалення EXIF
Видалити фон зображення
Водяний маркер
Запис з камери
Зміна розміру зображення
Зображення у SVG (potrace)
Конвертер HEIC
Конвертер ICO/PNG
Конвертер зображень
Обрізати зображення
Попередній перегляд SVG
Порівняння зображень
Читач EXIF/метаданих зображень
CSV до даних
Excel до даних
Torrent у Magnet
Генератор ULID
Конвертер Base64 Hex масивів
Конвертер багатьох одиниць
Конвертер властивостей
Конвертер географічних координат
Конвертер дБм мВт
Конвертер одиниць зберігання даних
Конвертер римських цифр
Конвертер рядків base64
Конвертер символів Unicode у Java сутності
Конвертер файлів Base64
Конвертер форматів змінних середовища
Конвертер числових систем
Нормалізатор електронної пошти
Обчислювач енергії
Текст у Unicode
Текст у двійковий ASCII
AGE Криптографія
Argon2 Хешер
Bcrypt
PGP шифрування
RSA шифрування
RSA/DSA/ECDSA підпис та перевірка
SAML-парсер
Байти Niceware для парольної фрази
Генератор CSR
Генератор Hmac
Генератор JWT
Генератор PGP ключів
Генератор RSA ключів
Генератор X509 сертифікатів
Генератор ключів ECDSA
Генератор ключів Ed25519
Енкодер/декодер Bech32
Калькулятор CRC
Конвертер SSL сертифікатів
Парсер JWT
Парсер сертифікатів/ключів
Пасето/PASERK Місцевий
Пасето/ПАСЕРК Державний/Приватний
Таємний обмін Шамірами
Хешування тексту
Хешування файлів
Шифрування / дешифрування тексту
Шифрування рядків Jasypt
Шифрування файлів PGP
Шифрування/дешифрування Ansible Vault
Бінарний калькулятор
Візуалізатор тригонометричних/рівняльних кривих
Калькулятор чайових
Конвертер математичних форматів
Математичне розпізнавання символів (OCR)
Оцінювач математичних виразів
BIMI DNS Generator
CIDR IPv4/6 у діапазон IP
DKIM DNS Generator
DNS запити
IPv4-6/IPRange/CIDR у IPRange/CIDR/IPMask
SIP-авторизація
tools.restic-command-generator.name
tools.url-redirection-checker.name
Аналізатор надійності пароля
Візуальний калькулятор підмережі
Генератор Apache LogRotate
Генератор Crontab
Генератор DNS DMARC
Генератор DNS PTR
Генератор FStab
Генератор HTAccess
Генератор Htpasswd/Htaccess
Генератор IPv6 ULA
Генератор Iptables
Генератор MAC-адрес
Генератор Option43
Генератор Rsync
Генератор SPF DNS
Генератор WPA PSK
Генератор базової автентифікації
Генератор випадкових портів
Генератор команд Curl
Генератор команд UFW
Генератор команд вимкнення
Генератор командного рядка firewalld
Генератор конфігурацій Wireguard
Геолокація IP
Декодер ARPA
Декодер X-VR-SpamCause
Діапазон IPv4/6 у CIDR
Завантажувач за кількома посиланнями
Запити DNS/RDAP до Cloudflare
Калькулятор HDD
Калькулятор RAID
Калькулятор RAID-масивів ZPOOL
Калькулятор chmod
Калькулятор виключення підмереж IP
Калькулятор надійності RAID
Калькулятор підмереж IPv4
Калькулятор підмереж IPv6
Калькулятор швидкості передачі даних
Команди оболонки Лінеаризатор
Конвертер IPv4 адрес
Конвертер IPv6 адрес
Конвертер MAC-адрес
Конвертер Punycode
Лістер підмереж IPv4
Моя IP-адреса
Надійність пароля Zxcvbn
Номери портів
Перевірка DNSBL
Перевірка Whois
Пошук MAC-адреси
Пінг
Розширювач діапазону IPv4
Санітизатор HAR
Тестер WebSocket
Тестер мікрофона
Тестер портів TCP/UDP
Форматування команд оболонки
Форматувач Nginx
Цілі числа у IPv4/IPv6
Шпаргалка ZPool
CSS/JS Прикрашання та мінімізація
Json в SQL INSERT
Json до Protobuf
Json у Typescript
Генератор GitIgnore
Генератор атрибутів Git
Генератор мета-тегів Open Graph
Генератор параметрів SQL
Генератор поштових адрес
Генератор секретів Django
Генератор скриптів для навантажувального тестування K6
Генератор таблиць бази даних
Генератор фавіконок
Деобфускатор/Розпаковувач Javascript
Ескейпер рядка
Конвертер Curl
Конвертер котирувань
Конвертер файлів HEX
Конструктор рядків підключення до бази даних
Конструктор створення баз даних
Мініфікатор SQL
Обфускатор Javascript
Підсвічувач коду/скриптів
Редактор команд CLI
Роздільник файлів
Таймер Pomodoro
Тестер API
Тестер PicoMatch
Тестер втечі ANSI
Тестер інтерфейсу користувача Swagger
Фальсифікатор даних
Форматування SQL
Форматувач Javascript
Форматувач стек-трас
Інформація про код кнопки
Аналізатор звітів DMARC
Визначення типу файлу
Генератор TCPDump
Декодер EMV TLV
Декодер Safelink Outlook
Декодер посилань Sharepoint
Декодер транзакцій ETH
Детектор/декодер кодування тексту
Екстрактор Snowflake ID
Калькулятор резисторів
Конвертер GZip/Deflate
Конвертер Hex
Конвертер MIME кодування
Конвертер Middle-Endian
Конвертер MongoDB ObjectId
Конвертер SMART Raw
Конвертер чисел з плаваючою комою
Консоль послідовного порту
Конструктор URL-адрес
Конструктор команд Nmap
Маскування конфіденційних даних
Парсер Outlook MSG
Парсер URL
Парсер відмов пошти
Парсер електронної пошти
Парсер файлів cookie
Пошук властивостей ActiveDirectory LDAP
Розширювач коротких URL-адрес
Тестер DNS
Тестер HTTPS
Тестер мертвих пікселів
Тестер поширення DNS
Читач файлів Parquet
Шпаргалка з підключення RJ45 Cat6
键盘测试器
ASCII текстовий малювальник
JSON до TOON
TOON у JSON
Tab до пробілів
Вибір емодзі
Випадковий вибір рядків
Витяг тексту з HTML
Генератор Lorem ipsum
Генератор команд Sed
Генератор цитат
Генератор/Банер Zalgo
Діаграма структури папок
Експортер Mermaid
Зображення у ASCII арт
Зчитувач RSVP
Калькулятор Левенштейна
Кодер/декодер токенів GPT
Конвертер коду Морзе
Конвертер регістру
Конвертер розкладки клавіатури
Конвертер рун
Конвертер списків
Обфускація рядка
Оцінювач токенів GPT
Пакування файлів для ШІ
Перевірка I та L
Перекладач тексту
Порівнювач списків
Порівняння текстів
Порівняння шрифтів
Поширення посилань у соціальних мережах
Пошук дублікатів рядків
Розділювач AI підказок
Розумний замінник тексту
Різні слова
Статистика тексту
Текст у алфавіт НАТО
Текст у форматі Unicode
Тестер Regex
Форматувач Unicode
Юнікод до GSM-7
Epub у Markdown
HTML у Markdown
Markdown у HTML
tools.markdown-format-converter.name
Вставка як Markdown
Генератор змісту Markdown
Генератор таблиць Markdown
Знижка Lorem Ipsum
Знижка до даних
Попередній перегляд Markdown
Прикрашач таблиці Markdown
Редактор Markdown
Розцінка в текст
Різниця уцінки
Уцінка до DOCX
Конвертер енергії їжі
Конвертер об'ємної витрати
Конвертер одиниць довжини
Конвертер одиниць енергії
Конвертер одиниць кутів
Конвертер одиниць маси
Конвертер одиниць об'єму
Конвертер одиниць площі
Конвертер одиниць потужності
Конвертер одиниць сили
Конвертер одиниць тиску
Конвертер освітленості
Конвертер префіксів СІ
Конвертер прискорення
Конвертер температури
Конвертер швидкості
Перетворювач частоти
Фітнес-комп'ютер
Калькулятор амортизації
Шпаргалка Bash
Шпаргалка CSS селекторів
Шпаргалка Docker
Шпаргалка Docker SWARM
Шпаргалка Dockerfile
Шпаргалка Git
Шпаргалка JSONPath
Шпаргалка Jq
Шпаргалка Markdown
Шпаргалка Nano
Шпаргалка Nginx
Шпаргалка Powershell
Шпаргалка Regex
Шпаргалка Sed
Шпаргалка VIM
Шпаргалка XPath
Шпаргалка для K8s
Шпаргалка з екранних команд
Шпаргалка загальних регулярних виразів
Шпаргалка по Docker Compose
Шпаргалка по команді Tmux
Шпаргалка по команді Zellij
Шпаргалка по команді chmod
Шпаргалка по семантичному коміту в Git
tools.epc-qrcode-generator.name
Валідатор GTIN
Генератор QR-кодів
Генератор QR-кодів для WiFi
Генератор QR-кодів для контактної інформації
Генератор штрих-кодів
Декодер QR-кодів
Зчитувач штрих-кодів

Шпаргалка Nginx

Конфігурація Nginx та корисні команди

nginx is a web server, reverse proxy and load balancer. Configuration is a tree of contexts — main → events / http → server → location — and a directive is only valid in the contexts that define it.

🛠 Service & CLI

# check the configuration before you break production
sudo nginx -t

# print the entire resolved configuration, includes and all
sudo nginx -T

# reload without dropping connections
sudo nginx -s reload
sudo systemctl reload nginx

# start, stop, restart, status
sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx
sudo systemctl status nginx

# version, and the modules it was built with
nginx -V

# enable a site (Debian/Ubuntu layout)
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

# watch the requests come in
sudo tail -f /var/log/nginx/access.log
sudo tail -f /var/log/nginx/error.log

💡 nginx -t then nginx -s reload — never restart on a live server if you can avoid it. A reload keeps existing connections alive; a restart drops them.

📁 Where Things Live

PathWhat it holds
/etc/nginx/nginx.confThe main file — worker settings and the http block
/etc/nginx/conf.d/*.confIncluded by default on RHEL-style installs
/etc/nginx/sites-available/Site configs on Debian/Ubuntu
/etc/nginx/sites-enabled/Symlinks to the sites that are actually live
/var/log/nginx/access.logEvery request
/var/log/nginx/error.logErrors, and anything the workers complain about
/var/www/htmlThe conventional document root

🧱 Config Skeleton

user www-data;
worker_processes auto;

events {
  worker_connections 1024;
}

http {
  include       /etc/nginx/mime.types;
  default_type  application/octet-stream;
  sendfile      on;
  keepalive_timeout 65;

  server {
    listen 80;
    server_name example.com;

    location / {
      root /var/www/html;
      index index.html;
    }
  }
}

🎧 listen & server_name

server {
  # plain HTTP
  listen 80;

  # HTTPS, with HTTP/2
  listen 443 ssl;
  http2 on;

  # IPv6 as well, or IPv6 only
  listen [::]:80;
  listen [::]:80 ipv6only=on;

  # the fallback server for requests that match no other server_name
  listen 80 default_server;

  # one name, several names, wildcards, or a regex
  server_name example.com;
  server_name example.com www.example.com;
  server_name *.example.com;
  server_name ~^(?<sub>.+)\.example\.com$;

  # requests that arrive with no Host header
  server_name "";
}

📄 Serving Files

server {
  listen 80;
  server_name example.com;
  root /var/www/example.com;
  index index.html index.htm;

  # try the file, then the directory, then fall back — the SPA pattern
  location / {
    try_files $uri $uri/ /index.html;
  }

  # cache fingerprinted assets hard
  location ~* \.(js|css|png|jpe?g|gif|svg|woff2?)$ {
    expires 1y;
    add_header Cache-Control "public, immutable";
    access_log off;
  }

  # a directory listing, when you actually want one
  location /downloads/ {
    autoindex on;
  }

  # a single file
  location = /robots.txt {
    root /var/www/example.com;
    log_not_found off;
  }
}

⚠️ root vs alias: root appends the whole URI to the path, alias replaces the matched prefix. With location /static/ { root /var/www; } a request for /static/a.png reads /var/www/static/a.png; with alias /var/www/assets/; it reads /var/www/assets/a.png. Always end an alias path with /.

📍 Location Matching

nginx does not pick locations top to bottom — it picks by modifier, in this order:

ModifierExampleMeaningPriority
=location = /healthExact match1 — wins immediately
^~location ^~ /static/Prefix match that stops regex matching2
~location ~ \.php$Case-sensitive regex, first match in file order3
~*location ~* \.(jpe?g)$Case-insensitive regex3
(none)location /images/Prefix match — the longest one wins if no regex did4
location = /health { return 200 "ok\n"; }   # checked first, cheapest
location ^~ /assets/ { root /var/www; }     # never falls through to the regex below
location ~* \.(png|jpg)$ { expires 30d; }
location / { try_files $uri $uri/ =404; }   # the catch-all

🔀 Redirects & Rewrites

# permanent redirect to the canonical host
server {
  listen 80;
  server_name www.example.com;
  return 301 https://example.com$request_uri;
}

# force HTTPS
server {
  listen 80;
  server_name example.com;
  return 301 https://$host$request_uri;
}

# temporary redirect of a single path
location /old-page {
  return 302 /new-page;
}

# rewrite with a captured segment
location /blog/ {
  rewrite ^/blog/(.*)$ /articles/$1 permanent;
}

# serve a maintenance page for everyone but your own IP
location / {
  if ($remote_addr != 203.0.113.7) {
    return 503;
  }
}

💡 Prefer return over rewrite — it is faster and clearer. Reach for rewrite only when you need to transform the path.

🔁 Reverse Proxy

server {
  listen 80;
  server_name app.example.com;

  location / {
    proxy_pass http://127.0.0.1:3000;

    # pass the client's details through to the app
    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;

    # timeouts: raise these for slow backends
    proxy_connect_timeout 60s;
    proxy_send_timeout    60s;
    proxy_read_timeout    60s;

    # buffering off for streaming responses (SSE, logs)
    proxy_buffering on;
  }

  # WebSockets need the upgrade headers
  location /ws/ {
    proxy_pass http://127.0.0.1:3000;
    proxy_http_version 1.1;
    proxy_set_header Upgrade    $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_read_timeout 3600s;
  }
}

⚠️ The trailing slash on proxy_pass changes everything. proxy_pass http://backend; forwards /api/users as /api/users; proxy_pass http://backend/; strips the matched location prefix first.

⚖️ Load Balancing

upstream backend {
  # least_conn;              # send to the server with the fewest connections
  # ip_hash;                 # sticky sessions by client IP
  # hash $request_uri;       # sticky by URI

  server 10.0.0.1:3000 weight=3;
  server 10.0.0.2:3000;
  server 10.0.0.3:3000 max_fails=3 fail_timeout=30s;
  server 10.0.0.4:3000 backup;

  keepalive 32;              # reuse upstream connections
}

server {
  listen 80;
  location / {
    proxy_pass http://backend;
    proxy_http_version 1.1;
    proxy_set_header Connection "";   # required for keepalive to work
  }
}
MethodBehaviour
(default)Round robin, honouring weight
least_connFewest active connections wins
ip_hashSame client IP always reaches the same server
hash <key>Distribute by any variable, e.g. $request_uri
random two least_connPick two at random, then the less busy one

🔐 HTTPS

server {
  listen 443 ssl;
  http2 on;
  server_name example.com;

  ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

  ssl_protocols TLSv1.2 TLSv1.3;
  ssl_prefer_server_ciphers off;
  ssl_session_cache shared:SSL:10m;
  ssl_session_timeout 1d;
  ssl_stapling on;
  ssl_stapling_verify on;

  # tell browsers to stay on HTTPS
  add_header Strict-Transport-Security "max-age=63072000" always;
}
# get and renew certificates automatically
sudo certbot --nginx -d example.com -d www.example.com
sudo certbot renew --dry-run

🚦 Limits & Access Control

http {
  # 10 MB of state ≈ 160k addresses; 10 requests/second per IP
  limit_req_zone $binary_remote_addr zone=req_limit:10m rate=10r/s;
  limit_conn_zone $binary_remote_addr zone=conn_limit:10m;

  server {
    # allow short bursts, queue the rest without delaying legitimate users
    location /api/ {
      limit_req zone=req_limit burst=20 nodelay;
      limit_conn conn_limit 10;
    }

    # the size of the largest upload you accept
    client_max_body_size 25m;

    # HTTP basic auth (htpasswd -c /etc/nginx/.htpasswd user)
    location /admin/ {
      auth_basic "Restricted";
      auth_basic_user_file /etc/nginx/.htpasswd;
    }

    # allow a subnet, deny the rest
    location /internal/ {
      allow 10.0.0.0/8;
      deny  all;
    }

    # do not serve dotfiles
    location ~ /\.(?!well-known) {
      deny all;
    }
  }
}

🗜 Performance

http {
  # compress text responses
  gzip on;
  gzip_vary on;
  gzip_min_length 1024;
  gzip_types text/plain text/css application/json application/javascript
             text/xml application/xml image/svg+xml;

  # kernel-level file sending
  sendfile on;
  tcp_nopush on;
  tcp_nodelay on;

  # keep connections around for reuse
  keepalive_timeout 65;
  keepalive_requests 1000;

  # cache open file handles
  open_file_cache max=10000 inactive=30s;
  open_file_cache_valid 60s;

  # a proxy cache for upstream responses
  proxy_cache_path /var/cache/nginx keys_zone=app_cache:10m max_size=1g inactive=60m;

  server {
    location / {
      proxy_cache app_cache;
      proxy_cache_valid 200 10m;
      add_header X-Cache-Status $upstream_cache_status;
    }
  }
}

🧪 Useful Variables

VariableHolds
$hostThe Host header, or the server name that matched
$uriThe normalised path, without the query string
$request_uriThe original path with the query string
$args / $arg_nameThe whole query string / one named parameter
$schemehttp or https
$remote_addrThe client’s IP address
$proxy_add_x_forwarded_forThe existing chain plus $remote_addr
$http_<name>Any request header, e.g. $http_user_agent
$request_methodGET, POST, …
$statusThe response status
$upstream_addrWhich backend actually served the request
$upstream_response_timeHow long the backend took
$request_timeHow long nginx took, start to finish

🩺 Troubleshooting

SymptomUsual cause
502 Bad GatewayThe backend is down, or refused the connection — check the app and proxy_pass
504 Gateway TimeoutThe backend is too slow — raise proxy_read_timeout, then fix the app
413 Request Entity Too LargeRaise client_max_body_size
403 Forbidden on a static fileThe worker user cannot read the path, or a directory lacks x
The wrong site is servedNo server_name matched, so the default_server answered
Changes have no effectThe config was never reloaded, or the file is not symlinked into sites-enabled
# see the config nginx is actually running, includes resolved
sudo nginx -T | less

# which worker user needs read access
ps -o user= -C nginx | sort -u

# turn up the error log while debugging
# error_log /var/log/nginx/error.log debug;

📚 Resources

  • Official documentation
  • Directive index
  • Variable index
  • Mozilla SSL configuration generator
  • Certbot — Let’s Encrypt