معماری اکوسیستم

معماری فنی ساب‌دامین‌ها و مسیریابی

بررسی فنی SubdomainMiddleware، روتینگ کانونیکال و هماهنگی کوکی‌ها در Django.

آخرین بروزرسانی: ۱ آبان ۱۴۰۵ · بخش مهندسی کراپلود

۱. مسیریابی در سطح میدل‌ور (SubdomainMiddleware)

در کراپلود، تفکیک ساب‌دامین‌ها توسط SubdomainMiddleware در سطح درخواست‌های HTTP مدیریت می‌شود. این میدل‌ور هاست ورودی را بررسی کرده و بر اساس دامنه، request.urlconf مناسب را بارگذاری می‌کند:

# backend/apps/core/middleware.py
class SubdomainMiddleware(MiddlewareMixin):
    def process_request(self, request):
        host = request.get_host().split(":")[0].lower()
        if host == settings.AUTH_DOMAIN:
            if request.path == "/":
                return redirect(f"https://{settings.AUTH_DOMAIN}/accounts/login/")
            return None
        elif host == "plus.croplod.com":
            request.urlconf = "apps.plus.urls"
            return None
        elif host == settings.WALLET_DOMAIN:
            request.urlconf = "config.wallet_urls"
            return None

۲. قوانین کوکی و امنیت بین‌دامنه‌ای

کوکی‌های احراز هویت و CSRF به شکل گسترده روی سطح ریشه تنظیم می‌شوند:

SESSION_COOKIE_DOMAIN = '.croplod.com'
CSRF_COOKIE_DOMAIN = '.croplod.com'
SESSION_COOKIE_SECURE = True
SESSION_COOKIE_HTTPONLY = True
CSRF_COOKIE_SAMESITE = 'Lax'