فارسی
باز کردن در Telegram

پست ‏Trust Proxy توی Express.js چیه و دقیقاً چه کاری میکنه؟ 🤔

9 فوریه 2025
G
genix
‏Trust Proxy توی Express.js چیه و دقیقاً چه کاری میکنه؟ 🤔 ‏Trust Proxy یه تنظیم توی Express هست که به اپلیکیشن میگه آیا باید به اطلاعاتی که توی هدرهای X-Forwarded-For و X-Forwarded-Proto میاد، اعتماد کنه یا نه. حالا این یعنی چی؟ یعنی وقتی برنامه بک اند یه سرور واسطه‌ای (مثل Nginx یا Cloudflare) قرار داره، IP و پروتکل واقعی کاربر توی این هدرها قرار می‌گیره. Express به‌طور پیش‌فرض به این اطلاعات اعتماد نداره اما اگه trust proxy رو فعال کنید، Express از این هدرها برای تعیین IP و پروتکل واقعی کاربر استفاده میکنه. ‏۲. Trust Proxy به چه دردی میخوره؟ وقتی که برنامه‌ شما رو یه پراکسی معکوس (Reverse Proxy) یا یه لود بالانسر اجرا میشه، در حالت عادی Express فقط IP و اطلاعاتی که از سمت اون پراکسی دریافت کرده رو می‌بینه، نه اطلاعات اصلی کاربر. این یعنی ممکنه req.ip اشتباه باشه، req.protocol به جای https مقدار http داشته باشه و کلی مشکل دیگه. اینجاست که Trust Proxy به درد می‌خوره 👇🏻 ‏- وقتی فعال بشه، Express مقدار واقعی IP کاربر رو از X-Forwarded-For میخونه. ‏- req.protocol‏ رو بر اساس X-Forwarded-Proto تنظیم میکنه. ‌‌‏ ‏- req.hostname رو درست مقداردهی میکنه‏ ‏ ‏ ۳. چجوری Trust Proxy رو توی Express فعال کنیم؟ خیلی ساده! const app = express(); app.set("trust proxy", true); با این تنظیم: ‏- req.ip مقدار واقعی آی‌پی کاربر رو میده. ‏- req.protocol مقدار واقعی http یا https رو نشون میده. اما... فعال کردنش به این سادگی هم نیست! چون ممکنه سرورهای پراکسی مختلفی جلوی اپلیکیشن باشن و تو نیاز داشته باشی مشخص کنی که به کدوم پراکسی‌ها اعتماد داری. ‏ ۴. Trust Proxy چه مقدارهایی میگیره؟ مقدار true همیشه بهترین گزینه نیست. Express چند مدل مقدار رو قبول میکنه: app.set("trust proxy", false); // پیش‌فرض، هیچ پراکسی‌ای رو قبول نمی‌کنه. app.set("trust proxy", true); // به همه پراکسی‌ها اعتماد میکنه. app.set("trust proxy", "loopback"); // فقط به 127.0.0.1 اعتماد میکنه. app.set("trust proxy", "127.0.0.1"); // فقط به این IP خاص اعتماد میکنه. app.set("trust proxy", ["192.168.1.1", "10.0.0.1"]); // لیستی از پراکسی‌های قابل‌اعتماد. app.set("trust proxy", 2); // از آخرین دو پراکسی مقدار رو می‌خونه. - مقدار 2 یعنی چی؟ وقتی مقدار 2 رو میدید، Express میاد ip واقعی کاربر رو از دو پراکسی آخر توی X-Forwarded-For استخراج میکنه. این کار به درد جایی میخوره که چند تا سرور بین کاربر و اپلیکیشن هستن. - پس مقدار true بدیم یا نه؟ بهتره فقط به پراکسی‌هایی که می‌شناسی اعتماد کنید. مثلاً اگه سرور فقط Cloudflare یا Nginx قرار داره، میتونید فقط به اون آی‌پی‌ها اعتماد کنین تا از IP Spoofing جلوگیری بشه. ‏Trust Proxy یه تنظیم مهمه که وقتی برنامتون یه پراکسی مثل Nginx یا Cloudflare باشه، کمک میکنه Express اطلاعات واقعی کاربر رو تشخیص بده. اما باید دقت کنی که به هر پراکسی‌ای اعتماد نکنید! برای امنیت بیشتر، فقط به آی‌پی‌هایی که واقعاً Proxyهای خودتون هستن اجازه بدید. برای جزئیات بیشتر میتونید به مستندات رسمی Express در مورد TrustProxy مراجعه کنید، که این جنبه ها رو با عمق بیشتری توضیح میده. #nodejs #express @CodeModule
32 · 3.3K ·

در همان حوالی فید

Ggenixحباب هوش مصنوعی شکست! 🫧 اخیراً یک مدل هوش مصنوعی به نام DeepSeek از چین معرفی شد که توجه بسیاری به خودش جلب کرد. این مدل زبانی عملکردی شبیه به GPT داره و از طری𔓙𔓙صداقت حرف اول رو میزنه. #fun @CodeModule
این پیام
𔓙𔓙یه جوری راجب همه چیز پست زدیم که دیگه واقعا ایده ندارم. یه ساعت درگیر پست زدن راجب یه موضوع بودم، بعد ک تموم شد فهمیدیم راجب اون موضوع قبلا پست گذاشتیم :))) نظر𔓙𔓙@CodeModuleGap دوستان تازه وارد، گروه اصلی چنل اینه. روزانه کلی بحث، پرسش و پاسخ و ... داریم. انتقادی، صحبتی یا سوالی چیزی داشتید اینجا میتونید مطرح کنید 💙
CCode Module | کد ماژولCode Module | کد ماژول@CodeModule · کانال · فناوری
2 180مشترک594میانگین دسترسی پست
فید انجمن باز کردن در Telegram

فید عمومی باز از ایندکس جست‌وجو ChatCrawler — «Google برای Telegram عمومی»؛ با خزش انجمن به‌روز می‌شود. زمان‌ها به UTC است.

فقط محتوای عمومی، API رسمی Telegram. دربارهٔ ما · پرسش‌ها · محدودیت‌های ایندکس · حذف یک صفحه · کاتالوگ · جست‌وجو · روش محاسبهٔ ما