Tool.Yun
Nyttige verktøy for utviklere
Beskjær bilde
Bilde til SVG (potrace)
Bildefargeinverter
Bildeformatkonverter
Bildesammenligning
Bildestørrelsesendrer
EXIF/metadata/GPS/JPEG-bildekvalitetsleser
Fjern EXIF
Fjern bildebakgrunn
GIF til MP4
HEIC-konverter
ICO/PNG-konverter
Kameraopptak
OCR-redigering av bilder og PDF-filer
SVG-forhåndsvisning
Vannmerke
BMI-kalkulator
Forklar Shell-kommandoen
IBAN validering og analysering
IES-belysningsretningslinjer
ISBN-validator og parser
ISO 3166-landskodesøker
ISO 639-søker
Kalenderkonverterer
Kompatibilitet med programvarelisenser
Kredittkortkontrollør
Luhn-validator
Løpetempokalkulator
MVA-nummervalidator
Online ordbok
RMB store bokstaver konverter
SLA-kalkulator
Telefon format og parserer
Unicode-søk
Valutakonverterer
Cron/Ukedagsalarm
Dager Kalkulator
Dato-tid konverter
ETA kalkulator
Hvilken dag?
ICAL-filparser
ICAL-generator
Kalkulator for dato+varighet
Kronometer
Nedtelling
TTL-kalkulator
Tidsalarm
Tidssonekonverter
Uketallskonverter
Varighetskalkulator
iCal-fusjon
Docker Compose Format Converter
Docker Compose til .env-fil
Docker Compose til Docker-kjørekonverter
Docker Compose til Quadlets
Docker Compose-validator
Docker Pangolin-etiketter
Docker run til Docker compose konverter
Docker-bildenedlaster
Docker-inspeksjon for å kjøre Docker
Docker-kjøring til Kubernetes
Docker-kjøring til Quadlets
Docker-skriving til kubernetes
Dockerfile-etikettgenerator
Kubernetes RBAC-generator
Traefik Docker Compose Maker
Amortiseringskalkulator
Akselerasjonsomformer
Arealenheter Konverter
Energienheter konverter
Frekvensomformer
Hastighetsomformer
Kraftenheter konverter
Lengdeenheter Konverter
Lysstyrkekonverter
Masseenheter konverter
Matenergiomformer
SI-prefikskonverterer
Strømomformer
Temperatur konverter
Treningsdatamaskin
Trykkenhetskonverter
Vinkelenheter Konverter
Volumenheter Konverter
Volumstrømningshastighetskonverter
BIP39 nøkkelords generator
Diceware passordgenerator
NanoID-generator
Numeronymgenerator
OTP kode generator
Passordgenerator
Postkodegenerator
Tilfeldige tallgenerator
Tokengenerator
UUID-generator
UUID-konverter
CSV til JSON
JS til JSON-konverter
JSON Linter
JSON forskjønning og formatering
JSON minifiser
JSON til .env
JSON til C#
JSON til CSV
JSON til JS-konverter
JSON til Java-enhet
JSON til MessagePack
JSON til TOML
JSON til TS
JSON til XML
JSON til YAML konverterer
JSON til data
JSON til objekt
JSON to Go
JSON-forskjell
JSON-fusjon
JSON-redigeringsprogram
JSON-sorteringsmaster
JSON-utflatning/oppheving av utflatning
Jq/JSONPath-tester
Json Escaper/Unscaper
Json til PHP-array
Json til PHP-kode
Json til Python
Json til SQL DDL
Json til skjema
Json-spørring
Json-strengkonverterer
Json-størrelsesanalysator
Meldingspakke til JSON
ObjGen til JSON
PHP-array til JSON
tools.json-patch.name
Bash-jukseark
CSS-velgere jukseark
Docker Compose-jukseark
Docker SWARM-jukseark
Docker-jukseark
Dockerfile-jukseark
Git Semantic Commit-jukseark
Git jukselapp
JSONPath-syntaks-jukseark
Jq-jukseark
Jukseark for nedbetaling
K8s jukseark
Nano-jukseark
Nginx-jukseark
Powershell-jukseark
Regex-jukseark
Sed jukselapp
Skjermkommando-jukseark
Tmux-kommando-jukseark
VIM-jukseark
Vanlig Regex-jukseark
XPath-syntaks-jukseark
Zellij-kommandoen jukseark
chmod-kommandoen Cheatsheet
Base64 Hex array-koder/dekoder
Base64 fil konverter
Base64 string kode/dekoder
Csv til data
E-postnormalisering
Egenskapskonverter
Energiforbruks- og utgiftsdatamaskin
Excel til data
Geografiske koordinatkonverterer
Heltalls konverter
Konverter for datalagringsenheter
Konverter for konvoluttvariabler
Konverter fra Unicode-tegn til Java-enheter
Mange enheter konverter
Romertall konverter
Tekst til ASCII binært
Tekst til Unicode
Torrent til magnet
ULID-generator
dBm mW-omformer
AGE-kryptografi
Ansible Vault Crypt Dekryptering
Argon2 Hasher
Bcrypt
Bech32-koder/dekoder
CRC-kalkulator
CSR-generator
ECDSA-nøkkelpargenerator
Ed25519 nøkkelpargenerator
Filhasher
Hash tekst
Hmac-generator
JWT-generator
JWT-parser
Jasypt-strengkryptering
Krypter / decrypter tekst
Niceware Bytes til passordfrase
PGP-filkryptering
PGP-kryptering
PGP-nøkkelgenerator
Paseto/PASERK Local
Paseto/PASERK Offentlig/Privat
RSA nøkkelpar generator
RSA-kryptering
RSA/DSA/ECDSA-signatør og verifikator
SAML-parser
SSL-sertifikatkonverter
Sertifikat-/nøkkelparser
Shamirs hemmelige deling
X509 sertifikatgenerator
Binær kalkulator
Konverter for matematiske formater
Matematikk OCR
Matematikkevaluator
Tipskalkulator
Visualisator for trigonometrisk/ligningskurve
Cron-uttrykksbygger
Bygg en referansemåler
Geografisk avstandskalkulator
Kalkulator for sideforhold
Prosent kalkulator
Epub til Markdown
Forbedring av prisnedsettelsestabell
Forhåndsvisning av Markdown
Generator for avmerkingstabeller
HTML til prisnedsettelse
Lim inn som Markdown
Markdown Lorem Ipsum
Markdown-innholdsfortegnelsesgenerator
Markdown-redigeringsprogram
Nedgradering til DOCX
Nedgradering til data
Nedmerking til HTML
Nedmerking til tekst
Nedskrivningsforskjell
tools.markdown-format-converter.name
Bilde til CSS
CSS XPath-konverter
CSS-enhetskonverterer
CSS-forskjønner
CSS-gradientgenerator
Enhets informasjon
Farge konverter
Fargehjul
Fargekontrastkontroll
HTML WYSIWYG-editor
HTML streng rensing
HTML til XHTML
HTML til data
HTML-minifikator
HTTP status koder
Html-forskjønner
Html-renser
Kode/dekode URL-formaterte strenger
MIME typer
REM-pikselkonverter
SVG plassholder generator
Slugify streng
Søkefragmentskaper for URL-tekst
URL-renser
UTM URL-generator
Url Fanger
User-agent analysering
ARPA-dekoder
Analyseverktøy for passordstyrke
Apache LogRotate Generator
BIMI DNS-generator
Chmod kalkulator
Cloudflare DNS/RDAP-spørringer
Crontab-generator
DKIM DNS-generator
DMARC DNS-generator
DNS-spørringer
DNSBL-sjekker
FStab-generator
Formatering av skallkommandoer
Generator for avstengningskommandoer
Grunnleggende autentiseringsgenerator
HAR Sanitizer
HDD-kalkulator
HTAccess-generator
Heltall til IPv4/IPv6
Htpasswd/htaccess-generator
IP-geografisk plassering
IPv4 adresse konverter
IPv4 range utvider
IPv4 subnet kalkulator
IPv4-6/IPRange/CIDR i IPRange/CIDR/IPMaske
IPv4-delnettliste
IPv6 ULA-generator
IPv6-adressekonverter
Iptables-generator
Ipv6-subnettkalkulator
Kalkulator for IPv4/6 CIDR til IP-område
Kalkulator for IPv4/6-område til CIDR(er)
Kalkulator for dataoverføringshastighet
Kalkulator for ekskludering av IP-subnett
Krøllekommandogenerator
Linearisering av skallkommandoer
MAC address oppslagsverk
MAC adresse generator
MAC-adressekonverterer
Mikrofontester
Min IP-adresse
Nedlaster med flere lenker
Nginx-formatering
Option43-generator
PTR DNS-generator
Ping
Portnumre
Punycode-konverterer
RAID-kalkulator
RAID-pålitelighetskalkulator
Rsync-generator
SIP-autorisasjon
SPF DNS-generator
TCP/UDP-porttester
Tilfeldig port generator
UFW-kommandogenerator
Visuell subnettkalkulator
WPA PSK-generator
Websocket tester
Whois-sjekker
Wireguard-konfigurasjonsgenerator
X-VR-SpamCause-dekoder
ZPOOL RAID-kalkulator
ZPool-jukseark
Zxcvbn Passordstyrke
firewalld kommandolinjegenerator
tools.restic-command-generator.name
tools.url-redirection-checker.name
HTML til PDF
PDF signatur sjekker
PDF-kompressor
PDF-tekstuttrekker
Pdf Linearize/FastWeb
Pdf-dekryptering og opplåsing
Pdf-kryptering
Pdf-sammenkobling
Pdf-sideuttrekker
ActiveDirectory LDAP-egenskapssøker
DMARC-rapportanalysator
DNS-forplantningstester
DNS-tester
Død pikseltester
E-postparser
EMV TLV-dekoder
ETH-transaksjonsdekoder
Filtypedetektor
Flytallskonverter
GZip/Deflate-konverter
HTTPS-tester
Heksadesimal enkoder/dekoder
Informasjonskapsler-parser
Jukseark for RJ45 Cat6-ledninger
MIME-kodingskonverter
Maskering av sensitive data
Middle-Endian-konverter
MongoDB ObjectId-konverterer
Motstandskalkulator
Nmap-kommandobygger
Outlook MSG-parser
Outlook Safelink-dekoder
Parkettfiler Leser
Parser for avvist e-post
SMART Raw-konverter
Seriell portkonsoll
SharePoint-delings-URL-dekoder
Snøfnugg-ID-uttrekker
TCPDump-generator
Tastekode info
Teksttegnsettdetektor/dekoder
URL analyse
URL-bygger
Utvider for korte URL-er
键盘测试器
Kortvelger
Lykkehjul
Myntflipper
Terningkaster
GTIN-validator
QR Kode generator
QR-kodedekoder
QR-kontaktinformasjonsgenerator
Strekkodegenerator
Strekkodeleser
WiFi QR Kode generator
tools.epc-qrcode-generator.name
TOML til JSON
TOML til YAML
TOML-linter
AI-ledetekstdeler
ASCII kunsttekstgenerator
Bilde til ASCII-kunst
Bokstavkonvertering
Distinkte ord
Emoji velger
GPT-tokenestimator
GPT-tokenkoder/dekoder
Hallo, generator.
Havfrueeksportør
I og L Checker
JSON til TOON
Levenshtein-kalkulator
Liste konverterer
Lister Sammenlign
Mappestrukturdiagram
Morsekodekonverterer
Pakk filer for AI
RSVP-leser
Regex-tester
Runekonverter
Sammenligning av skrifttyper
Sed-kommandogenerator
Sitasjonsgenerator
Smart teksterstatning og linjebryter
Sosial lenkedeler
Streng obfuskator
Søker etter duplikatlinjer
TOON til JSON
Tabulator til mellomrom
Tastaturoppsettkonverterer
Tekst diff
Tekst statistikk
Tekst til NATO alfabetet
Tekst til Unicode-navn
Tekstoversetter
Tilfeldig linjevelger
Trekk ut tekst fra HTML
Unicode til GSM-7
Unicode-formatering
Zalgo-generator/banner
ANSI-rømningstester
API Tester
CLI kommando editor
CSS/JS Forskjønn og Minimer
Databaseopprettingsbygger
Databasetabelgenerator
Dataforfalsker
Django Secret Generator
Favicon-generator
Fildeler
GitIgnore-generator
Gitattributes Generator
HEX-filkonverterer
Javascript Prettifier
Javascript Unobfuscator/Unpacker
Javascript-forvirring
Json til Protobuf
Json til SQL INSERT
Json til Typescript
K6 Skriptgenerator for lasttesting
Kode-/skriptmarkering
Krøllekonverter
Mailto-generator
Picomatch-tester
Pomodoro-timer
SQL forskjønning and format
SQL-minifikator
SQL-parametergenerator
Sitatkonverterer
Stacktrace penere
Strengbygger for databasetilkobling
Strengeutløser
Swagger UI-tester
Åpne grafmetagenerator
ObjGen til HTML
XML formaterer
XML til JSON
XML-linter
XPath-tester
XSLT-tester
YAML forskjønning og formatering
YAML til JSON konverter
YAML til TOML
YAML-fusjon
YAML-utflating/oppreving

Nginx-jukseark

Nginx-konfigurasjon og nyttige kommandoer

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