Nginx Yapılandırma Üreteci
Nginx yapılandırmalarını sıfırdan yazmak; her proxy_set_header'ı, her gzip MIME türünü ve try_files $uri/ /index.php?$args ile yönlendirmeyi ince bir şekilde bozan sürüm arasındaki farkı hatırlamak demektir. Bu üreteç alan adını, upstream'i, PHP işleyiciyi ve SSL yollarını sorar, sonra TLS, HTTP/2, statik önbellekleme ve sıkıştırma için makul varsayılanlarla bir sunucu bloğu çıkarır.
Sunucu bloğunuz nasıl oluşturulur
-
1
Bir hazır ayar seçin
Statik site, PHP-FPM (Laravel, WordPress), Node.js ters proxy ya da düz bir 301 yönlendirmesi.
-
2
Alan adını girin
server_name listesini ekleyin: genellikle www ve www'siz varyantlar.
-
3
SSL ayrıntılarını belirleyin
fullchain ve privkey dosyalarınızı gösterin ya da yalnızca HTTP kullanmak için atlayın.
-
4
Upstream'i ayarlayın
proxy_pass durumları için port, soket yolu ya da arka uç URL'si.
-
5
Kopyalayın ve dağıtın
Çıktıyı /etc/nginx/sites-available içine bırakın, nginx -t çalıştırın ve yeniden yükleyin.
İyi bir sunucu bloğu nasıl görünür
Modern bir Nginx sanal ana bilgisayarında genellikle şu parçalar bulunur:
| Bölüm | Amaç |
|---|---|
listen 443 ssl http2 |
HTTP/2 etkin HTTPS’i kabul et |
ssl_certificate + ssl_certificate_key |
TLS materyalini göster |
ssl_protocols TLSv1.2 TLSv1.3 |
Eski TLS sürümlerini at |
gzip on + türler |
Metin/HTML/JSON/JS/CSS’i anında sıkıştır |
Statik varlıklar için expires başlıkları |
Tekrar gelen ziyaretçilerden gidiş-dönüşleri azalt |
try_files |
Bir ön denetleyiciye yönlendir (PHP, Laravel vb.) |
| HSTS + güvenlik başlıkları | Tarayıcıyı TLS konusunda dürüst tut |
Ters proxy temelleri
Nginx arkasında çalışan Node.js, Python, Ruby uygulamaları için:
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;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
X-Forwarded-For‘u unutmak, uygulama günlüklerinizdeki gerçek istemci IP’lerini kaybetmenin klasik yoludur.
Yaygın hatalar
- Eksik
server_nameyedeği. Hiçbir ad eşleşmezse Nginx ilk sunucu bloğunu varsayılan olarak kullanır. Host başlığı saldırılarından kaçınmak için 444 döndüren bir tümünü-yakalaserver_name _bloğu koyun. - Yanlış sertifika sırası.
ssl_certificatedosyası yalnızca yaprak değil, fullchain (yaprak + ara sertifikalar) olmalıdır. - Aşırı hevesli önbellekleme.
/index.html‘eexpires 1ygöndermek dağıtımları mahveder. Bunun yerine varlık URL’lerini sürümlendirin. - Yeniden yüklemeden önce test yok.
systemctl reload nginx’ten önce her zamannginx -tçalıştırın: bir sözdizimi hatası siteyi çevrimdışı yapar.
Sık Sorulan Sorular
HTTP/2 kararlıdır ve Nginx 1.25+‘ta evrensel olarak desteklenir. HTTP/3 (QUIC) Nginx 1.25+‘ta deneysel olarak mevcuttur. 2025’te bir üretim yapılandırması için HTTP/2’yi etkinleştirin ve isteğe bağlı olarak http3 ve quic yönergeleriyle HTTP/3’ü katmanlayın.
Yaygın uygulama, herkese açık zincirler için /etc/ssl/certs/ ve anahtarlar için /etc/ssl/private/‘dır. Let’s Encrypt her şeyi /etc/letsencrypt/live/domain/ altına koyar. Yenileme aracınızın beklediğini kullanın.
Çoğu site için evet. 301 https://$host$request_uri döndüren ayrı bir port-80 sunucu bloğu ekleyin. HSTS ile birleştirildiğinde, ilk istekten sonra HTTP bloğuna neredeyse hiç başvurulmaz.
Yapılandırmayı yeniden yüklemeden ayrıştırmak için sudo nginx -t çalıştırın. “syntax is ok” ve “test is successful” yazdırırsa, sudo systemctl reload nginx ile yeniden yükleyin. Üretimde asla restart kullanmayın: reload atomiktir.
İlgili Araçlar
ASCII Tablosu Referansı
NUL, LF ve DEL dahil her kod için ondalık, onaltılık, sekizlik ve ikili değerlerle HTML sayısal karakter başvurusu gösterimini sunan tam ASCII tablosu.
HTML Karakter Referansı
HTML varlıklarının aranabilir listesi; adlandırılmış ve sayısal kodlarıyla birlikte özel karakter ve semboller için tek tıkla kopyalama.
Klavye kısayolları başvurusu
macOS, Windows ve Linux’ta VS Code, Chrome ve GNU Readline kullanan Bash için belgelenmiş varsayılan kısayolları arayın.
FPS Sayacı
requestAnimationFrame ile tarayıcı FPS değerini ölçün: yumuşatma, en düşük ve en yüksek kare hızı, uyarı eşiği ve isteğe bağlı grafik. Yerel çalışır, yükleme ve API yoktur.
E-posta Doğrulayıcı
Bir e-posta adresini doğrulayın: RFC 5322 sözdizimi kontrolü, canlı MX kaydı sorgulama, ayrıca yerel kısım, alan adı ve uzunluk bilgileri. Hiçbir e-posta gönderilmez.
EditorConfig Oluşturucu
Girinti stili ve boyutu, satır sonu, karakter kümesi ve boşluk kurallarınızla bir .editorconfig dosyası oluşturarak IDE ve editörler arasında tutarlı biçimlendirme sağlayın.
Araç diğer dillerde mevcuttur
- Nginx 設定ジェネレーター [JA]
- Trình tạo cấu hình Nginx [VI]
- Nginx 설정 생성기 [KO]
- مولّد إعدادات Nginx [AR]
- Gerador de Configuração Nginx [PT]
- Nginx Konfigurationsgenerator [DE]
- Generador de Configuración de Nginx [ES]
- Générateur de configuration Nginx [FR]
- Nginx-configuratiegenerator [NL]
- Nginx-konfigurationsgenerator [SV]
- Generator Konfigurasi Nginx [ID]
- ตัวสร้างไฟล์ config ของ Nginx [TH]
- Generator konfiguracji Nginx [PL]
- Nginx Config Generator [EN]
- Generatore di Configurazione Nginx [IT]
- Генератор конфигураций Nginx [RU]
- Nginx 配置生成器 [ZH]