تنظیم proxy_buffer_size در Nginx

nginx proxy buffer size
30 بهمن 1403

شناختن ویژگی proxy_buffer_size در Nginx


وقتی از Nginx به عنوان یک سرور پروکسی استفاده می‌کنیم، یکی از ویژگی‌های مهمی که باید به آن توجه کنیم، تنظیم proxy_buffer_size است. این ویژگی به ما کمک می‌کند تا اندازه بافر را که برای نگهداری پاسخ سرورهای پشتیبان (backend) استفاده می‌شود، تعیین کنیم. این تنظیم می‌تواند بر روی عملکرد وب‌سایت شما تأثیر زیادی بگذارد.


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


مقدار proxy_buffer_size باید به‌صورتی تنظیم شود که متناسب با اندازه پاسخ‌های معمولی سرورهای پشت‌صحنه شما باشد. اگر خیلی کوچک باشد، ممکن است داده‌ها به طور صحیح پردازش نشوند، و اگر خیلی بزرگ باشد، منابع سرور شما به طور غیرضروری هدر می‌رود.


به‌علاوه، بعد از تغییر مقدار proxy_buffer_size، لازم است Nginx را مجدداً راه‌اندازی کنید تا تنظیم جدید اعمال شود. این کاملاً طبیعی است که پس از تغییرات، برخی تنظیمات دیگر مانند proxy_buffers هم تحت تأثیر قرار گیرد، بنابراین شما باید با دقت آن‌ها را نیز بررسی کنید.


نمونه کد برای تنظیم proxy_buffer_size


http {
proxy_buffer_size 128k;

server {
listen 80;
server_name example.com;

location / {
proxy_pass http://backend;
}
}
}

توضیح خط به خط کد




http {
این خط نشان‌دهنده شروع بلاک HTTP در پیکربندی Nginx است.



proxy_buffer_size 128k;
این خط مقدار بافر را برای پاسخ‌های پروکسی به 128 کیلوبایت تنظیم می‌کند.



server {
این خط نشان‌دهنده شروع بلاک سرور است که تنظیمات خاص مربوط به یک سرور را تعریف می‌کند.



listen 80;
در اینجا مشخص می‌کند که سرور به درخواست‌های HTTP بر روی پورت 80 گوش می‌دهد.



server_name example.com;
این خط نام دامنه سرور را تعیین می‌کند.



location / {
این خط نشان‌دهنده بلاکی است که رفتار Nginx را در هنگام دریافت درخواست برای آدرس اصلی مشخص می‌کند.



proxy_pass http://backend;
این خط در واقع درخواست‌ها را به سرور پشتیبان (backend) منتقل می‌کند.



}
این خط نشان‌دهنده پایان بلاک location است.



}
این خط پایان بلاک سرور را نشان می‌دهد.



}
و در نهایت، این خط پایان بلاک HTTP را نشان می‌دهد.

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

؟

proxy_buffer_size چیست و چرا مهم است؟

؟

چطور می‌توانم مقدار proxy_buffer_size را تغییر دهم؟

؟

آیا تغییر proxy_buffer_size نیاز به راه‌اندازی مجدد سرور دارد؟