Nginx'te HTTP'den HTTPS'e yönlendirme için rewrite yerine return 301 kullanmak hem daha hızlı hem de daha okunaklıdır. Kural 80 portunu dinleyen ayrı bir server bloğunda tutulur.
Temel yapılandırma
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
server_name example.com www.example.com;
ssl_certificate /etc/ssl/example/fullchain.pem;
ssl_certificate_key /etc/ssl/example/example.key;
}
http2 on; yönergesi Nginx 1.25.1 ve sonrası içindir; eski sürümlerde listen 443 ssl http2; yazılır.
www'yu tek biçime sabitlemek
Hedef adresi $host yerine sabit yazarsanız yönlendirme tek adımda canonical alan adına gider:
server {
listen 80;
server_name example.com www.example.com;
return 301 https://example.com$request_uri;
}
443 bloğunda da www'lu adres için ayrı bir server tanımlayıp aynı şekilde yönlendirin; aksi halde www'lu HTTPS sürümü erişilebilir kalır.
Uygulama ve test
- Dosyayı düzenleyin (genelde
/etc/nginx/conf.d/veyasites-available/). - Sözdizimini denetleyin:
nginx -t - Yeniden yükleyin:
systemctl reload nginx - Sonucu doğrulayın:
curl -I http://example.com/deneme?a=1çıktısında301ve doğruLocationgörülmeli.
Dikkat edilecekler
- Let's Encrypt gibi HTTP doğrulaması kullanıyorsanız
/.well-known/acme-challenge/yolunu yönlendirmeden hariç tutmanız gerekebilir. - Yük dengeleyici arkasındaysanız döngüyü önlemek için
$http_x_forwarded_protodeğerine bakın. - Özel portlarda (ör. 8080) yönlendirme yazarken hedefte port belirtmeyi unutmayın.
HSTS ile birlikte
Yönlendirme sorunsuz çalıştığında 443 bloğuna add_header Strict-Transport-Security "max-age=31536000" always; ekleyebilirsiniz. Başlık yalnızca HTTPS yanıtlarında anlamlıdır; 80 portundaki yönlendirme yanıtına eklemek gerekmez. Alt alan adlarının hepsi HTTPS'e hazır değilse includeSubDomains kullanmayın ve süreyi önce kısa tutup kademeli artırın.
Sertifikanızı henüz almadıysanız SSL sertifikaları sayfasına, kurulum sonrası kontrol için SSL kontrol aracına göz atın.