پروکسی کش در ماژول ngx_http_proxy_module در Nginx

nginx ngx_http_proxy_module proxy_cache_methods
01 فروردین 1404

ماژول ngx_http_proxy_module یکی از اجزای مهم Nginx است که به ما این امکان را می‌دهد تا درخواست‌های HTTP را به سرور‌های دیگر ارسال کنیم. یکی از ویژگی‌های جالب این ماژول، قابلیت استفاده از کش است. کش کردن درخواست‌ها به ما کمک می‌کند تا بار روی سرورها را کاهش دهیم و سرعت بارگذاری وب‌سایت را افزایش دهیم.

این ماژول به ما اجازه می‌دهد تا درخواست‌ها را برای چندین روش HTTP مشخص کنیم. به عنوان مثال، می‌توانیم تعیین کنیم که کدام درخواست‌ها باید کش شوند و کدام یک کش نشوند. این کار به ما این امکان را می‌دهد که کنترل بیشتری روی عملکرد سرور و استفاده از منابع داشته باشیم.

ما با استفاده از دستور proxy_cache_methods می‌توانیم این روش‌ها را مشخص کنیم. این دستور به ما اجازه می‌دهد تا متدهای HTTPی که باید کش شوند را تعریف کنیم. به طور پیش‌فرض، فقط درخواست‌های GET و HEAD کش می‌شوند، اما با استفاده از این دستور می‌توانیم دیگر متدها را نیز اضافه کنیم.

برای مثال، فرض کنید که می‌خواهیم درخواست‌های POST را نیز کش کنیم. این کار را می‌توانیم به سادگی با تایپ کردن روش‌های مورد نظر در دستور proxy_cache_methods انجام دهیم. این قابلیت برای برنامه‌هایی که به شدت به کش وابسته هستند، بسیار مفید است.

location /api {
proxy_pass http://backend;
proxy_cache my_cache;
proxy_cache_methods GET HEAD POST;
}

در کد بالا، ما درون بلاک location یک پروکسی برای درخواست‌های به آدرس /api تعریف کرده‌ایم. ابتدا، با استفاده از دستور proxy_pass، درخواست‌ها به سرور backend ارسال می‌شوند. سپس با استفاده از proxy_cache کش را فعال کرده‌ایم و در نهایت با proxy_cache_methods مشخص کرده‌ایم که متدهای GET، HEAD و POST کش شوند.

توضیحات مراحل کد:


خط 1: location /api - تعریف یک بلاک برای مدیریت درخواست‌های آدرس /api.
خط 2: proxy_pass http://backend; - ارسال درخواست به آدرس سرور backend.
خط 3: proxy_cache my_cache; - فعال کردن کش با نام my_cache.
خط 4: proxy_cache_methods GET HEAD POST; - مشخص کردن متدهای کش شده: GET، HEAD و POST.

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

؟

چطور می‌توانم کش را در Nginx فعال کنم؟

؟

چه متدهایی می‌توانم برای کش کردن انتخاب کنم؟

؟

آیا کش کردن POST مناسب است؟

؟

چگونه می‌توانم مقدار کش را پاک کنم؟