Nginx reverse proxy ne işe yarar?
Reverse proxy, istemcinin 443’te Nginx’e gelmesi, Nginx’in isteği içerideki uygulamaya (Node 3000, Gunicorn 8000, ikinci VDS) iletmesidir. Kazanım: tek SSL sonlandırma, HTTP başlıkları, sıkıştırma, statik dosya, rate limit, birden fazla Host.
Forward proxy (kurum çıkış proxy) farklıdır. Docker’da Traefik/Caddy aynı rolü oynar. Yanlış proxy_set_header Host, uygulama yanlış sanal host üretir; X-Forwarded-Proto https değilse “redirect loop” WordPress’te klasiktir. define('FORCE_SSL_ADMIN', true) ve $_SERVER['HTTPS'] = 'on' proxy arkasında gerekebilir. proxy_hide_header Upgrade üretimde WebSocket’i kırar. keepalive_timeout 65 varsayılanı uzun upload’ta yetmez. split_clients A/B için ileri seviye. access_log buffer=32k I/O’yu düşürür. $remote_addr CDN arkasında kenar IP’sidir; real_ip_module şarttır.
Temel sunucu bloğu nasıl yazılır?
location / { proxy_pass http://127.0.0.1:3000; proxy_http_version 1.1; 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; } client_max_body_size 32m; zaman aşımı uzun yüklemede proxy_read_timeout 60s.
WebSocket: Upgrade ve Connection başlıkları. Birden fazla backend: upstream api { server 127.0.0.1:3000; } proxy_pass http://api. nginx -t && systemctl reload nginx. SELinux varsa httpd_can_network_connect. proxy_buffering off SSE/streaming için gerekir; aksi halde olaylar birikir. gzip on; gzip_types application/json text/css. limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s; hassas /login için. real_ip_header X-Forwarded-For yalnızca güvendiğiniz CDN/proxy setinden. resolver 1.1.1.1; upstream dinamik DNS’te. map $http_upgrade $connection_upgrade { default upgrade; '' close; } WebSocket şablonunun kalbidir. Hata sayfası: proxy_intercept_errors off bırakın ki uygulama 404’ü kendisi versin.
SSL ve HTTP’den yönlendirme
listen 80; return 301 https://$host$request_uri; 443’te ssl_certificate Let’s Encrypt fullchain. Mozilla SSL Generator ara yapı güvenli başlangıçtır. OCSP/stapling isteğe bağlı. HTTP/2: http2 on (sürüme göre listen 443 ssl http2).
certbot --nginx bu blokları yazabilir; elle yazdıysanız certbot --nginx mevcut server_name’i tanır. Yenileme: certbot renew --dry-run. HSTS includeSubDomains wildcard ile düşünülür. ssl_stapling on; ssl_stapling_verify on Mozilla ara yapıda vardır. dhparam artık TLS1.3’te daha az kritik, protokol listesini güncel tutun.
Sık hatalar
502 Bad Gateway: backend kapalı, sock yolu yanlış (PHP-FPM). 504: uygulama kilitlendi. 413: client_max_body_size. Loop: X-Forwarded-Proto yok, uygulama HTTPS’e zorluyor. Host $host yerine IP, sanal host kaçırır. error.log’da upstream timed out satırı proxy_read_timeout işaret eder. curl -H Host:ornek.com http://127.0.0.1 Nginx’i yerelde dener. ss -lntp dinlenen portu doğrular.
| Belirti | Kontrol | Komut |
|---|---|---|
| 502 | backend dinliyor mu | ss -lntp | grep 3000 |
| nginx -t fail | noktalı virgül | nginx -t |
| Redirect loop | proto başlığı | curl -I -H Host: |
| WS kopuyor | Upgrade | tarayıcı ağ paneli |
Emriva ürün eşlemesi
Bu bölüm ürün eşlemesidir. Reverse proxy Linux VDS’te sizin Nginx’inizdir; cPanel LiteSpeed ayrı dünyadır. Node, PHP-FPM ve staging aynı kalıbı kullanır. Xeon 2–4 GB küçük proxy+app için yeter.
Konfig paylaşırken sertifika yolunu ve iç IP’leri maskeleyebilirsiniz.
