عملکرد try_files در NGINX

nginx try files
20 فروردین 1404

درک عملکرد try_files در NGINX

توی NGINX، ما همیشه به دنبال بهترین راه‌ها برای مدیریت درخواست‌های ورودی هستیم. یکی از قابلیت‌های فوق‌العاده این وب‌سرور، دستور try_files هست که به ما اجازه می‌ده تا چندین فایل یا مسیر رو بررسی کنیم و اگر یکی از اون‌ها موجود بود بهش هدایت کنیم. این موضوع می‌تونه خیلی برای وب‌سایت‌هایی که فایل‌های متعددی دارن و نیاز به مدیریت اختصاصی دارن، کارایی داشته باشه.

در حقیقت، try_files می‌تونه به ما کمک کنه تا خطاها رو از بین ببریم. مثلاً، اگر یک کاربر به URL خاصی مراجعه کنه که فایل مورد نظر وجود نداره، می‌تونیم به راحتی اون رو به مسیر دیگه‌ای هدایت کنیم، یا حتی یک صفحه کاربرپسند 404 رو نشون بدیم. این کار باعث میشه تجربه کاربری بهتری داشته باشیم و کاربر رو به سمت اطلاعات درست هدایت کنیم.

دستور try_files به سادگی در فایل پیکربندی NGINX استفاده میشه و با این کار می‌تونیم چندین مسیر رو بررسی کنیم. مثلاً می‌خوایم ببینیم آیا یک فایل وجود داره، اگر وجود نداشته باشه پس به مسیر بعدی می‌ریم و این روند ادامه پیدا می‌کنه. این یکی از ابزارهای مهم برای هر توسعه‌دهنده وب محسوب می‌شه تا وب‌سایتشون رو بهینه‌سازی کنن.

توجه داشته باشید که این دستور باید درون یک بلوک location قرار بگیره. داخل این بلوک، می‌تونیم اولویت‌های خاصی رو برای درخواستی که دریافت می‌کنیم مشخص کنیم. به‌عنوان مثال، اگر یک فایل استاتیک وجود نداشته باشه، می‌تونیم کاربر رو به صفحه خطای 404 هدایت کنیم. این مدل از مدیریت فایل‌ها و درخواست‌ها می‌تونه تنوع زیادی داشته باشه و از این رو جوابی انعطاف‌پذیر به نیازهای مختلف میده.

مثال استفاده از try_files

location / {
try_files $uri $uri/ /404.html;
}

توضیح کد

در این مثال، ما یک بلوک location تنظیم کردیم:


location / {

این خط مشخص می‌کنه همه درخواست‌ها که با یک اسلش (/) شروع می‌شن، به این بلوک میاد.


try_files $uri $uri/ /404.html;

در این خط، NGINX ابتدا بررسی می‌کنه آیا فایل مورد نظر (که با $uri مشخص میشه) وجود داره. اگر وجود نداشته باشه، بررسی می‌شه آیا می‌شه این URI به صورت دایرکتوری (با یک اسلش در انتها) استفاده بشه یا نه. اگر هیچکدام وجود نداشته باشه، کاربر به صفحه 404.html هدایت میشه.


}

این خط پایان بلوک location رو مشخص می‌کنه.

سوالات متداول

؟

try_files چه کاری انجام می‌دهد؟

؟

چگونه می‌توانم از try_files استفاده کنم؟

؟

آیا استفاده از try_files باعث افزایش سرعت لود می‌شود؟

؟

چه زمانی باید از try_files استفاده کنم؟