Buyukweb
Alt Alan Adı Yönetimi: Subdomain Stratejileri ve Yapılandırması

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.

Büyükweb Editör EkibiHosting, Sunucu ve Sistem Yönetimi Editörü12 dakika okuma

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:

  1. Subdomain adını yazın (blog)
  2. Ana domain'i seçin (buyukweb.com)
  3. Belge kökünü ayarlayın (/public_html/blog veya özel bir yol)
  4. 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'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.

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

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:

#subdomain#alt alan adı#dns#nginx vhost#wildcard#subdomain yönetimi

Bu yazıyı paylaş