• 23-03-2025, 20:26:11
    #1
    Herkese Merhabalar,
    Geliştirdiğimiz proje bir iş takip yazılımıdır. Multi tenant yapıda, .net core ile geliştiriyoruz. Tenantların, uygulamaya bizim domain üzerinden değil de kendi subdomainleri üzerinden girmesini istiyorum yani app.livosoft.com değil de , giris.tenantdomain.com olmasını istiyorum.
    Bu şekilde olması için nasıl bir yol izleyebiliriz.
  • 23-03-2025, 20:33:15
    #2
    Sizin iş orda biraz karışıyor hocam .. Her tenant için dns kaydı ve s tartup.cs'de Middleware işlemi yapılması gerekli yani burdan şunu yap demekle olacak iş değil
  • 23-03-2025, 20:41:33
    #3
    Hugme adlı üyeden alıntı: mesajı görüntüle
    Sizin iş orda biraz karışıyor hocam .. Her tenant için dns kaydı ve s tartup.cs'de Middleware işlemi yapılması gerekli yani burdan şunu yap demekle olacak iş değil
    Bununla alakalı nasıl bir makale okumalıyım peki ?
  • 23-03-2025, 20:44:09
    #4
    bbedir34 adlı üyeden alıntı: mesajı görüntüle
    Bununla alakalı nasıl bir makale okumalıyım peki ?
    yapılacak işlemi bir yapay zekaya anlatacağım , bana nasıl yapacağımı anlat adım adım diyeceğim çıkan sonucu size yollayacağım ama mutlaka yedek almadan işlem yapmayın
  • 23-03-2025, 20:48:41
    #5
    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.
  • 23-03-2025, 21:02:36
    #6
    Teşekkürler buldum. Saolun
  • 23-03-2025, 21:03:41
    #7
    Hugme adlı üyeden alıntı: mesajı görüntüle
    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.
    Çok saoll