Nginx Subdomain Yönetimi ve Let’s Encrypt SSL Kurulumu
Bu rehberde Nginx üzerinde subdomain yönetimini, server_name eşleşme problemlerini ve Let’s Encrypt ile SSL kurulumunu adım adım ele alıyoruz. Özellikle admin.latestsoftwaredevelopers.com gibi bir admin panel subdomain’i kullanıyorsanız, yanlış yönlenme ve HTTPS problemlerini bu yapı ile kolayca çözebilirsiniz.
server_name, default server veya eksik 443 ssl bloğundan kaynaklanır.
Bu yazıda admin panel için ayrı Nginx config dosyası oluşturmayı, Certbot ile SSL eklemeyi
ve HTTP → HTTPS yönlendirmesini öğreneceksiniz.
Sunucu tarafında metrik ve log izleme de yapıyorsanız Loki + Grafana + Alloy ile log izleme rehberine de göz atabilirsiniz.
Subdomain Açılıyor Ama Ana Site Görünüyor
En sık karşılaşılan senaryolardan biri şudur: admin.latestsoftwaredevelopers.com açılır, ancak beklenen admin panel yerine ana blog veya ana site görünür.
Bunun temel nedenleri genellikle şunlardır:
- Admin subdomain için ayrı
serverbloğu yoktur server_nameyanlış yazılmıştır- İstek default server bloğuna düşüyordur
- HTTP tanımlıdır ama HTTPS için ayrı
443 sslbloğu yoktur
https://admin.domain.com açıyorsanız,
sadece listen 80; bloğu yeterli değildir. HTTPS için ayrıca
listen 443 ssl; tanımı gerekir.
Nginx Sites-Available Yapısı
Production ortamlarında temiz ve sürdürülebilir bir yapı için her domain veya subdomain adına karşılık gelen ayrı config dosyaları kullanmak iyi bir pratiktir.
/etc/nginx/sites-available/
latestsoftwaredevelopers.com.conf
admin.latestsoftwaredevelopers.com.conf
monitor.latestsoftwaredevelopers.com.conf
Bu dosyalar daha sonra sites-enabled içine linklenir:
sudo ln -s /etc/nginx/sites-available/admin.latestsoftwaredevelopers.com.conf \
/etc/nginx/sites-enabled/
Böylece hangi hostun hangi config ile servis edildiği çok daha net hale gelir.
Admin Panel için Nginx Config
Eğer admin paneliniz Angular build olarak statik servis ediliyorsa, temel HTTP config aşağıdaki gibi olabilir:
server {
listen 80;
server_name admin.latestsoftwaredevelopers.com;
root /var/www/html/blogfrontendadmin;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
error_log /var/log/nginx/admin_error.log;
access_log /var/log/nginx/admin_access.log;
}
Bu yapı Angular gibi SPA uygulamalarında route yenileme problemini
try_files $uri $uri/ /index.html; satırı ile çözer.
Nginx Config Kontrol Komutları
Yeni config ekledikten veya düzenledikten sonra mutlaka syntax testi yapılmalıdır.
sudo nginx -t
sudo systemctl reload nginx
Aktif server bloklarını kontrol etmek için:
sudo nginx -T | grep -n "server_name"
Sadece admin subdomain’in Nginx içinde tanımlı olup olmadığını görmek için:
sudo nginx -T | grep -n "admin.latestsoftwaredevelopers.com"
Eğer burada sonuç görmüyorsanız, Nginx ilgili hostu henüz tanımıyordur.
Let’s Encrypt ile SSL Kurulumu
Admin panel için HTTPS kullanmak istiyorsanız, Let’s Encrypt ile ücretsiz SSL sertifikası alabilirsiniz.
Certbot Kurulumu
sudo apt update
sudo apt install certbot python3-certbot-nginx -y
Sertifika Alma
sudo certbot --nginx -d admin.latestsoftwaredevelopers.com
İşlem sırasında e-posta adresi, kullanım koşulları ve HTTP isteklerinin HTTPS’e yönlendirilip yönlendirilmeyeceği sorulur. Burada Redirect seçmek genellikle en doğru yaklaşımdır.
SSL Sonrası Final Nginx Config
Certbot kurulumdan sonra çoğu zaman config’i otomatik olarak aşağıdaki yapıya yakın bir hale getirir:
server {
server_name admin.latestsoftwaredevelopers.com;
root /var/www/html/blogfrontendadmin;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
error_log /var/log/nginx/admin_error.log;
access_log /var/log/nginx/admin_access.log;
listen 443 ssl http2;
ssl_certificate /etc/letsencrypt/live/admin.latestsoftwaredevelopers.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/admin.latestsoftwaredevelopers.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
server {
listen 80;
server_name admin.latestsoftwaredevelopers.com;
return 301 https://$host$request_uri;
}
Böylece HTTP istekleri otomatik olarak HTTPS’e yönlendirilir.
Kurulumu Test Etme
Yapılandırma tamamlandıktan sonra aşağıdaki komutlarla bağlantıyı test edebilirsiniz:
curl -I http://admin.latestsoftwaredevelopers.com
curl -I https://admin.latestsoftwaredevelopers.com
HTTP isteğinde aşağıdakine benzer bir yanıt görmeniz gerekir:
301 Moved Permanently
Location: https://admin.latestsoftwaredevelopers.com
SSL yenileme sistemini kontrol etmek için:
sudo certbot renew --dry-run
Güvenlik ve SEO Notları
Admin paneli genellikle arama motorlarında indexlenmemelidir. Bunun için Nginx config içine şu header eklenebilir:
add_header X-Robots-Tag "noindex, nofollow" always;
Ayrıca admin panel ile ana site config dosyalarını ayrı tutmak, hem hata ayıklamayı kolaylaştırır hem de production ortamında yapı yönetimini daha güvenli hale getirir.
Sonuç
Bu rehberde Nginx subdomain yönetimini, server_name kaynaklı yönlendirme problemlerini ve Let’s Encrypt ile SSL kurulumunu adım adım inceledik.
- Admin panel için ayrı config dosyası oluşturduk
sites-availablevesites-enabledyapısını düzenledik- Nginx config testlerini yaptık
- Certbot ile SSL ekledik
- HTTP → HTTPS yönlendirmesini tamamladık
Bu yapı sayesinde admin paneliniz hem daha güvenli hem de daha stabil şekilde çalışacaktır.