Multi-tenant bir uygulamada tenant'ların kendi subdomain'leri üzerinden erişimi için aşağıdaki adımları izleyebilirsiniz:
- DNS Yapılandırması:
- Her tenant için wildcard DNS kaydı oluşturulmalı (.tenantdomain.com)
- Bu kayıtlar uygulamanızın host edildiği sunucuya yönlendirilmeli
- SSL Sertifikası:
- Wildcard SSL sertifikası alınmalı (.tenantdomain.com için)
- Veya Let's Encrypt gibi ücretsiz sertifika sağlayıcılardan her subdomain için ayrı sertifika alınabilir
Uygulama Kodu Değişiklikleri:
public class TenantMiddleware
{
private readonly RequestDelegate _next;
public TenantMiddleware(RequestDelegate next)
{
_next = next;
}
public async Task InvokeAsync(HttpContext context)
{
var host = context.Request.Host.Host;
var tenant = await ResolveTenant(host);
if (tenant != null)
{
context.Items["CurrentTenant"] = tenant;
await _next(context);
}
else
{
context.Response.StatusCode = 404;
return;
}
}
private async Task<Tenant> ResolveTenant(string host)
{
// Subdomain'i parse et
var subdomain = host.Split('.')[0];
// Veritabanından tenant bilgisini al
// return await _tenantService.GetTenantBySubdomain(subdomain);
}
}Startup.cs Konfigürasyonu: public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseMiddleware<TenantMiddleware>();
// Diğer middleware'ler...
}
[B][/B]IIS/Nginx Konfigürasyonu:- Wildcard binding yapılandırması eklenmeli
- SSL sertifikalarının doğru şekilde yapılandırılması
- Tenant Yönetimi:
- Tenant kayıt sürecinde subdomain bilgisi alınmalı
- Veritabanında tenant tablosuna subdomain kolonu eklenmeli
- Subdomain uniqueness kontrolü yapılmalı
Örnek appsettings.json:
{
"MultiTenancy": {
"DomainFormat": "{0}.tenantdomain.com",
"EnableSubdomainRouting": true
}
}
[B][/B]Bu yapılandırmalar sonrasında:
- Tenant'lar kendi subdomain'leri üzerinden uygulamaya erişebilecek
- Her tenant için ayrı bir URL yapısı oluşacak
- Sistem otomatik olarak tenant'ı tespit edip ilgili verileri gösterecek
Not: Bu çözüm temel bir yaklaşımdır. Projenizin spesifik gereksinimlerine göre ek özelleştirmeler yapmanız gerekebilir.