
Alt Alan Adı Yönetimi: Subdomain Stratejileri ve Yapılandırması
Subdomain oluşturma, wildcard DNS, multi-tenant SaaS pattern, subdomain vs subdirectory SEO karşılaştırması, CORS, cookie scope ve subdomain takeover güvenliği — DNS hiyerarşisinden nginx dynamic vhost'a kapsamlı rehber.
Alt Alan Adı Yönetimi: Subdomain Stratejileri ve Yapılandırması
DNS hiyerarşisinin en çok karıştırılan katmanlarından biri subdomain'ler. "Blog için subdomain mi açsam, yoksa /blog yolunu mu kullansam?" ya da "SaaS müşterilerim için musteri1.siteniz.com nasıl otomatik oluşturayım?" sorularına yanıt arıyorsanız doğru yere geldiniz. Bu yazı alt alan adı (subdomain) yapısını, DNS üzerinde nasıl oluşturulduğunu, wildcard kullanımını, multi-tenant SaaS mimarisini, güvenlik konularını ve SEO değerlendirmelerini tek çatıda ele alıyor.
Buyukweb perspektifi: cPanel hosting paketlerimizde cPanel üzerinden subdomain oluşturma, DNS kaydı tanımlama ve yönetim kolayca yapılabiliyor. Wildcard subdomain ve nginx dynamic virtual host, VDS (root erişimli) müşterilerimize açık. Herhangi bir aşamada takılırsanız 0850 302 60 70 destek hattımız yardımcı olur.
Subdomain Nedir? DNS Hiyerarşisi ve FQDN
Internet'te her domain, nokta ile ayrılmış hiyerarşik bir ağaçtır. En sağdaki parça TLD (Top-Level Domain: .com, .net, .com.tr), onun solundaki apex (kök) domain, onun solundaki ise subdomain.
DNS hiyerarşisi — örnek:
. ← Kök (root), her FQDN'in gizli sonu
com. ← TLD
buyukweb.com. ← Apex / kök domain
www.buyukweb.com. ← Subdomain (1. seviye)
blog.buyukweb.com. ← Subdomain (1. seviye)
api.buyukweb.com. ← Subdomain (1. seviye)
v2.api.buyukweb.com. ← Subdomain (2. seviye — derinleşebilir)
FQDN (Fully Qualified Domain Name): Trailing nokta dahil tam ad.
"blog.buyukweb.com." ← FQDN
"blog.buyukweb.com" ← FQDN olmayan ama pratikte aynı anlam
Apex (root) domain ile subdomain farkı: buyukweb.com apex; üzerine CNAME eklenemez (RFC kısıtı), yalnızca A veya AAAA kaydı alır. www.buyukweb.com ise subdomain; hem A hem CNAME olabilir.
Pratikte subdomain'ler şu amaçlarla açılır: www (geleneksel web), blog, api, admin, app, mail, cdn, staging, coğrafi (tr, de, us) veya SaaS müşteri (acme, beta-company).
Subdomain Oluşturma: DNS A Record ve CNAME
Bir subdomain, DNS bölge dosyasına kayıt eklenerek hayata geçer. İki temel yöntem:
A kaydı — subdomain'i doğrudan bir IPv4 adresine bağlar:
blog.buyukweb.com. 3600 IN A 195.85.100.51
api.buyukweb.com. 3600 IN A 195.85.100.52
staging.buyukweb.com. 300 IN A 195.85.100.53
CNAME kaydı — subdomain'i başka bir FQDN'e bağlar (IP değil, isim çözümlemesi):
www.buyukweb.com. 3600 IN CNAME buyukweb.com.
docs.buyukweb.com. 3600 IN CNAME buyukweb.gitbook.io.
status.buyukweb.com. 3600 IN CNAME buyukweb.statuspage.io.
Kural: CNAME'i asla MX, SOA veya başka CNAME'in hedefi olarak kullanmayın; RFC 1034 ihlali olur ve posta/DNS sorunları çıkar. Apex domain (buyukweb.com) için CNAME yasak — A veya AAAA kullanın.
cPanel ile Subdomain Ekleme
cPanel → Domains > Subdomains:
- Subdomain adını yazın (
blog) - Ana domain'i seçin (
buyukweb.com) - Belge kökünü ayarlayın (
/public_html/blogveya özel bir yol) - Kaydet — cPanel otomatik olarak DNS A kaydı ve Apache VirtualHost ekler
cPanel, aynı zamanda DNS bölge düzenleyicisi (Zone Editor) üzerinden ham kayıt eklemenize de izin verir; CNAME'i buradan ekleyebilirsiniz.
Paket bazlı subdomain limiti: cPanel paketleri subdomain sayısını kısıtlayabilir. Buyukweb'in Başlangıç paketinde limit daha düşük, Jet ve üzeri paketlerde daha fazla ya da sınırsız olabilir — kesin sayı için paket detayını veya destek hattını kontrol edin.
Wildcard Subdomain: *.buyukweb.com
Wildcard DNS kaydı, belirli bir domain'in tüm tek-seviye subdomain'lerini tek bir hedefe yönlendirir:
*.buyukweb.com. 3600 IN A 195.85.100.50
Bu kayıt herhangi-sey.buyukweb.com sorgularını 195.85.100.50'ye iletir — önceden tanımlanmamış subdomain'ler dahil. Öncelik kuralı: Özel kayıtlar wildcard'ı ezer; blog.buyukweb.com için ayrı A kaydı varsa o kullanılır.
Wildcard DNS'in pratik karşılığı nginx'te server_name *.buyukweb.com; tanımıdır:
# /etc/nginx/conf.d/wildcard.conf
server {
listen 443 ssl http2;
server_name *.buyukweb.com;
ssl_certificate /etc/ssl/wildcard-buyukweb.pem;
ssl_certificate_key /etc/ssl/wildcard-buyukweb.key;
# Subdomain adını değişkene al
set $subdomain "";
if ($host ~* "^([^.]+)\.buyukweb\.com$") {
set $subdomain $1;
}
# Her subdomain kendi dizinine
root /var/www/sites/$subdomain/public;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
}
VDS zorunluluğu: cPanel shared hosting'de wildcard subdomain yönetimi kısıtlıdır; nginx wildcard virtual host için root erişimi olan VDS gerekir. Buyukweb VDS müşterileri bu yapıyı doğrudan kurabilir.
SAN SSL vs Wildcard SSL: Subdomain Güvenliği
Subdomain sayısı az ve sabit ise (örn. www, api, blog) her birini SAN (Subject Alternative Name) sertifikasıyla tek tek listeleyebilirsiniz. cPanel AutoSSL, HTTP-01 challenge ile bilinen subdomain'leri SAN sertifikasına otomatik ekler.
Subdomain'ler dinamik veya çok sayıda ise (SaaS multi-tenant gibi) wildcard SSL (*.buyukweb.com) doğru seçim. Let's Encrypt wildcard sertifikası yalnızca DNS-01 challenge ile alınır:
# certbot + Cloudflare DNS plugin ile wildcard
sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials /root/.secrets/cloudflare.ini --agree-tos --no-eff-email -d buyukweb.com -d \*.buyukweb.com
Wildcard SSL ve Let's Encrypt DNS-01 kurulum detayları için Wildcard SSL: Let's Encrypt ile Alt Alan Adı SSL Kurulumu yazısına bakabilirsiniz; burada sadece subdomain mimarisindeki SSL seçim mantığına değiniyoruz.
Subdomain vs Subdirectory: SEO Tercihi
Tartışmanın en yaygın sorusu: "Blog için blog.buyukweb.com mı, buyukweb.com/blog mi?"
Google'ın tutumu: Google Arama Ekibi 2017'den itibaren subdomain'ler ve subdirectory'lerin SEO açısından eşdeğer işlendiğini belirtiyor. John Mueller defalarca "fark yok, ikisi de indekslenir, sıralanır" mesajını verdi. Yani "subdirectory'de link equity toplanır, subdomain ayrı site sayılır" söylemi teknik olarak 2012-2015 dönemi yorumdur ve güncelliğini yitirmiştir.
Pratik tercih kriterleri:
| Kriter | Subdomain | Subdirectory |
|---|---|---|
| Farklı teknoloji/CMS | İdeal — ayrı deploy, ayrı stack | Zor — monorepo gerekir |
| Coğrafi hedefleme | İdeal — hreflang ile ayrı sinyal | Mümkün ama URL yapısı karmaşıklaşır |
| SaaS müşteri alanı | Zorunlu | Pratik değil |
| Link equity yoğunlaştırma | Dağılır | Toplanır — e-ticaret blog için avantajlı |
| Tek GA4/GSC property | Ek yapılandırma gerekir | Kolay — doğal |
| Deployment bağımsızlığı | Yüksek | Düşük |
Kural değil, senaryo meselesi: Kararı SEO değil, teknik mimari ve operasyonel kolaylık belirlemeli. Blog içeriğini ana sitenin authority'siyle birleştirmek istiyorsanız subdirectory; farklı teknoloji yığını veya ekip kullanıyorsanız subdomain mantıklı.
Subdomain Tercih Senaryoları
1. Farklı teknoloji yığını: Ana site Next.js, blog WordPress ise blog.buyukweb.com en temiz ayrım. Her platform bağımsız deploy edilir, versiyon çakışması olmaz.
2. Coğrafi versiyon + hreflang:
<!-- tr.buyukweb.com sayfasının <head> bölümünde -->
<link rel="alternate" hreflang="tr" href="https://tr.buyukweb.com/" />
<link rel="alternate" hreflang="de" href="https://de.buyukweb.com/" />
<link rel="alternate" hreflang="x-default" href="https://buyukweb.com/" />
Subdomain başına hreflang tanımlandığında Google hangi dil/bölgeye hizmet ettiğini açıkça görür; Google Search Console'da ayrı property olarak yönetilebilir.
3. Staging/dev ortamı: staging.buyukweb.com, dev.buyukweb.com — canlıdan bağımsız test ortamı, robots.txt ile Disallow: / veya noindex meta tag ile indeksin dışında tutulmalı.
4. SaaS müşteri subdomain: Müşteri başına dinamik subdomain — sonraki bölümde detaylı anlatılıyor.
Subdirectory Tercih Senaryoları
E-ticaret siteleri için buyukweb.com/blog genellikle daha iyi çalışır: Ürün sayfalarından kazanılan link equity blog yazılarına akar, tek domain authority altında toplanır, GA4/GSC yönetimi basit kalır.
Benzer şekilde, küçük ölçekli servis siteleri (buyukweb.com/cpanel-hosting, buyukweb.com/vds-sunucu) için subdirectory yapısı hem SEO hem site yönetimi açısından daha az karmaşık.
Multi-Tenant SaaS Pattern: Otomatik Subdomain
SaaS uygulamalarında en yaygın mimari "her müşteriye kendi subdomain'i" modelidir. Shopify ve Stripe gibi platformların müşteri dashboard'ları benzer mantıkla çalışır.
Akış:
1. Yeni müşteri kayıt olur → "acme-corp" tenant adı belirlenir
2. Uygulama, acme-corp.siteniz.com'un geçerli olmasını bekler
3. Wildcard DNS *.siteniz.com → sunucu IP
4. Wildcard SSL *.siteniz.com → tüm tenant subdomain'leri SSL'li
5. nginx, $host üzerinden tenant adını okur → DB lookup → doğru veri göster
6. Müşteri panel: acme-corp.siteniz.com/dashboard
nginx dynamic vhost (multi-tenant):
server {
listen 443 ssl http2;
server_name *.siteniz.com;
ssl_certificate /etc/ssl/wildcard-siteniz.pem;
ssl_certificate_key /etc/ssl/wildcard-siteniz.key;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Tenant $subdomain;
# Uygulama X-Tenant header'ından müşteriyi tanır
}
}
Uygulama tarafında Host header'dan ya da X-Tenant header'dan subdomain adını çıkarıp ilgili müşteri veritabanı şemasına (veya satır setine) yönlendirir.
Cloudflare for SaaS Custom Hostnames: Müşteriniz kendi özel domain'ini kullanmak istiyorsa (acme-corp.com → sizin uygulamanız) Cloudflare for SaaS Custom Hostnames özelliği bunu API üzerinden otomatikleştirir; ancak bu ek özellik ücretli bir Cloudflare katmanı gerektirir.
Path-Based vs Subdomain-Based Multi-Tenant: Trade-Off
| Konu | Subdomain-based | Path-based |
|---|---|---|
| Cookie scope | domain=.siteniz.com tüm tenant'ları kapsar — dikkat! |
Doğal izolasyon |
| CORS | Tenant'lar arası API çağrısı ayrı origin → CORS header şart | Aynı origin |
| SSL | Wildcard veya Cloudflare for SaaS | Tek sertifika |
| Deployment | Her tenant bağımsız deploy edilebilir | Monolitik deploy |
| Ölçek | Wildcard DNS + dinamik vhost ile binlerce tenant | URL prefix routing |
| Müşteri deneyimi | Kendi subdomain'i → daha kurumsal his | /tenant-adi yolu |
Küçük ölçekte path-based daha basit; büyük ölçekte veya müşterilerin kendi subdomain/custom domain isteği varsa subdomain-based kaçınılmaz.
DNS Propagasyonu: TTL ve Kontrol
Yeni bir subdomain eklediğinizde veya mevcut kaydı değiştirdiğinizde değişiklik anında küresel DNS sunucularına yayılmaz. TTL (Time-To-Live) değeri bu gecikmeyi yönetir.
Deploy öncesi TTL stratejisi:
Değişiklikten 24-48 saat önce:
Mevcut TTL → 300 saniye (5 dakika) indir
Değişikliği yap (IP güncelle, yeni kayıt ekle)
DNS propagasyon sonrası (birkaç saat):
TTL'yi normale çek → 3600 (1 saat) veya 86400 (1 gün)
Propagasyon durumunu kontrol etmek için:
# Belirli DNS sunucusunu sorgula
dig blog.buyukweb.com @8.8.8.8
dig blog.buyukweb.com @1.1.1.1
# Tüm coğrafyalardan propagasyon kontrolü
# → whatsmydns.net adresinde domain'i test edin
DNS propagasyonu ve TTL yönetimi hakkında daha derin anlatım için DNS Propagasyonu: Neden Bekleriz, Nasıl Hızlandırırız? yazısına bakabilirsiniz.
Cookie Scope: Subdomain Paylaşımı ve İzolasyonu
Cookie'nin hangi subdomain'lere görünür olacağını Domain attribute belirler:
Set-Cookie: session=xyz; Domain=.buyukweb.com; Path=/; Secure; HttpOnly
→ Tüm subdomain'lere görünür: app.buyukweb.com, api.buyukweb.com, admin.buyukweb.com
Set-Cookie: session=xyz; Domain=app.buyukweb.com; Path=/; Secure; HttpOnly
→ Yalnızca app.buyukweb.com'a görünür
Multi-tenant uygulamalarda dikkat: Tüm tenant'lar *.siteniz.com altındaysa ve cookie Domain=.siteniz.com ise bir tenant'ın cookie'si başka tenant'ın subdomain'inde okunabilir — CSRF ve oturum sızıntısı riski. Her tenant'ı cookie düzeyinde izole etmek için:
- Token-based auth (JWT bearer header ile) → cookie kullanmadan
- Tenant başına
HttpOnly; SameSite=Strict+ oturum token'ının tenant ID ile bağlanması - Ya da path-based multi-tenant'a geçiş
CORS: Subdomain'ler Arası API Çağrısı
app.buyukweb.com ve api.buyukweb.com aynı şirkete ait olsa da tarayıcı bunları farklı origin olarak görür. app.buyukweb.com üzerinden çalışan JavaScript, api.buyukweb.com'a istek atarsa CORS politikası devreye girer.
# api.buyukweb.com nginx yapılandırması
server {
listen 443 ssl http2;
server_name api.buyukweb.com;
location / {
add_header Access-Control-Allow-Origin "https://app.buyukweb.com";
add_header Access-Control-Allow-Methods "GET, POST, PUT, DELETE, OPTIONS";
add_header Access-Control-Allow-Headers "Authorization, Content-Type";
add_header Access-Control-Allow-Credentials "true";
if ($request_method = OPTIONS) {
return 204;
}
proxy_pass http://127.0.0.1:8080;
}
}
Birden fazla subdomain'e izin vermek için $http_origin'i kontrol eden dinamik CORS mantığı gerekir; statik tek değer yeterli olmaz.
Subdomain Takeover Saldırısı
Az bilinen ama kritik bir güvenlik riski: dangling CNAME (sarkan CNAME).
Senaryo:
1. Şirket bir dönem: docs.buyukweb.com CNAME → buyukweb.github.io
2. GitHub Pages projesi kapatıldı, kayıt DNS'ten silinmedi
3. DNS'te hâlâ: docs.buyukweb.com CNAME buyukweb.github.io (artık sahipsiz)
4. Saldırgan GitHub'da buyukweb.github.io'yu kendi hesabıyla claim eder
5. docs.buyukweb.com artık saldırganın içeriğini gösteriyor
6. Ziyaretçi buyukweb.com subdomain'ini güvenilir görür → oltalama başarılı
Aynı senaryo eski Heroku uygulamaları, AWS S3 statik site bucket'ları, harici hizmetlerin sahipsiz kalmış endpointleri için geçerli.
Önlem:
- Bir hizmeti kapattığınızda ilgili DNS kaydını hemen silin
- Düzenli subdomain envanteri tutun
- Açık kaynak araçlarla denetim yapın:
# subjack ile dangling CNAME tespiti
subjack -w subdomains.txt -t 100 -timeout 30 -o sonuclar.txt -ssl
# subfinder ile subdomain keşfi (önce envanter çıkarın)
subfinder -d buyukweb.com -o subdomains.txt
Her subdomain CNAME'inin hâlâ aktif ve sahipli bir hedefe işaret ettiğini periyodik olarak doğrulayın.
Buyukweb ile Subdomain Yapılandırması
cPanel hosting paketleri:
cPanel → Domains > Subdomains üzerinden yeni subdomain ekleme birkaç tıkla tamamlanır. DNS A kaydı ve Apache VirtualHost otomatik oluşturulur. Zone Editor'dan özel CNAME ekleyebilirsiniz. Subdomain başına belge kökü tanımlanır; her subdomain bağımsız çalışır.
Subdomain sayısı paket bazında değişebilir — paket limitini öğrenmek veya artırmak için 0850 302 60 70 destek hattını arayın.
VDS (root erişimli) paketler:
VDS'de subdomain sayısında teknik bir üst sınır yok. nginx veya Apache virtual host'u istediğiniz gibi yapılandırırsınız, wildcard DNS + wildcard SSL + dynamic vhost kurulumu tamamen elinizde. Buyukweb E5-V4 ve E5-V2 VDS paketleri bu yapı için uygundur.
Önerilen VDS subdomain mimarisi:
# 1. Wildcard DNS kaydı: *.buyukweb.com → VDS IP (DNS panelinden)
# 2. Wildcard SSL (acme.sh + Cloudflare DNS API):
export CF_Token="API_TOKEN"
~/.acme.sh/acme.sh --issue --dns dns_cf -d buyukweb.com -d \*.buyukweb.com --keylength ec-256
# 3. nginx wildcard virtual host (yukarıdaki örnek yapılandırma)
# 4. Yeni subdomain ekleme: sadece nginx location veya upstream değişikliği
# DNS kaydı zaten wildcard tarafından karşılanıyor
Sık Sorulan Sorular
Subdomain mi, klasör (subdirectory) mi kullanmalıyım?
Farklı teknoloji/CMS kullanıyorsanız, SaaS müşteri subdomain'i gerekiyorsa veya ekipler bağımsız deploy istiyorsa subdomain. Tek platform ve link equity toplamak istiyorsanız subdirectory. SEO açısından Google her ikisini de eşit işliyor; teknik ve operasyonel faktörler karar verici.
Wildcard SSL nedir, ne zaman gerekir?
*.siteniz.com şeklindeki sertifika, tüm tek-seviye subdomain'leri tek sertifikayla kapsar. Subdomain sayısı dinamik veya çok fazlaysa (SaaS multi-tenant, 10+ subdomain) wildcard gerekir. Az ve sabit subdomain için cPanel AutoSSL ile SAN sertifikası yeterli — wildcard almanıza gerek yok.
Kaç subdomain açabilirim?
cPanel hosting paketlerinde limit pakete göre değişir; kesin sayı için Buyukweb destek hattına danışın. VDS'de teknik üst sınır yoktur; sınır yalnızca sunucu kaynaklarıdır.
Subdomain SEO'yu nasıl etkiler?
Google, subdomain'leri indexlemek ve sıralamak konusunda subdirectory ile aynı mekanizmayı kullanıyor. Hreflang ile coğrafi hedefleme, Search Console'da ayrı property yönetimi ve teknoloji bağımsızlığı gibi pratik avantajları için subdomain tercih edilir. SEO kararınız bu faydalar üzerine değil, mimariye uygunluğuna göre şekillensin.
Subdomain takeover nasıl önlenir?
Bir hizmeti kapattığınızda ilgili DNS CNAME kaydını derhal silin. Düzenli aralıklarla subdomain envanteri çıkarın; özellikle dış hizmetlere (statik site barındırma, PaaS platformları) işaret eden kayıtları doğrulayın. subjack gibi araçlarla otomatik denetim yapın.
Wildcard subdomain ile multi-seviye (sub.api.siteniz.com) çalışır mı?
*.siteniz.com yalnızca tek seviyeyi kapsar. v2.api.siteniz.com gibi iki seviyeli subdomain'ler *.siteniz.com wildcard'ı tarafından karşılanmaz; bunlar için ayrı A/CNAME kaydı veya *.api.siteniz.com gibi ikinci seviye wildcard (ayrı DNS kaydı) gerekir.
Cookie'yi tüm subdomain'lerle paylaşmak güvenli mi?
Domain=.siteniz.com ile tüm subdomain'lere cookie açmak pratik ama dikkatli yönetilmesi gereken bir tercih. Multi-tenant uygulamalarda tenant'lar arası oturum sızıntısını önlemek için JWT (header bazlı) auth veya tenant kimliğine bağlı oturum doğrulama tercih edin.
İlgili Büyükweb Hizmetleri
- VDS Sunucu — wildcard DNS, nginx dynamic vhost, root erişim ile tam kontrol
- cPanel Web Hosting — kolayca subdomain oluşturma, Zone Editor, AutoSSL
- Wildcard SSL: Let's Encrypt DNS-01 — wildcard sertifika kurulum adımları
- DNS Kayıtları Rehberi — A, CNAME, MX, TXT, TTL kavramsal hub
Subdomain kurulumu veya multi-tenant mimari danışmanlığı için 0850 302 60 70 numaralı destek hattımıza veya iletişim sayfamıza yazabilirsiniz.
Domain & DNS İlgili Hizmetlerimiz
Bu yazıda anlatılan teknik konuyu profesyonel altyapıyla deneyimleyin
Etiketler:

