نحوه کار با scgi_socket_keepalive در nginx
خُب، بیایید درباره nginx و ngx_http_scgi_module صحبت کنیم که یکی از ماژولهای پرکاربرد در nginx برای برقراری ارتباط با برنامههای SCGI است. SCGI یک پروتکل سبک و کمهزینه برای ارتباط بین وب سرورها و اپلیکیشنهاست. این پروتکل نسبت به CGI سرعت بالاتری دارد و به همین دلیل در بسیاری از پروژهها مورد استفاده قرار میگیرد.
یکی از ویژگیهای جذاب در nginx برای SCGI، گزینه scgi_socket_keepalive
است. وقتی شما از این گزینه استفاده میکنید، nginx اتصالهای SCGI را حفظ میکند تا نیاز به برقراری مجدد اتصال نباشد. این کار میتواند به بهبود عملکرد و کاهش زمان تاخیر در پاسخگویی کمک کند. به عبارت دیگر، برای درخواستهای متوالی، میتوانید از یک اتصال باز استفاده کنید و این امر به کاهش بار سرور منجر میشود.
حالا بیایید نگاهی به نحوه استفاده از این ویژگی بیندازیم. در فایل پیکربندی nginx (معمولاً nginx.conf)، شما میتوانید گزینه scgi_socket_keepalive
را به بخش location
مربوط به SCGI اضافه کنید. این کار به nginx میگوید که اجازه دهد اتصالهای SCGI برای مدت طولانیتری باز بمانند.
همچنین گزینههای دیگری نیز وجود دارند که میتوانید آنها را با scgi_socket_keepalive
ترکیب کنید. به طور مثال، شما میتوانید تعداد اتصالات نگهداشتنی را نیز تنظیم کنید که این موضوع میتواند بر روی عملکرد کلی سرور تأثیرگذار باشد. بنابراین حتماً باید با دقت این مقادیر را تنظیم کنید تا بهترین نتایج را بدست آورید.
server {
listen 80;
server_name example.com;
location /scgi {
include fastcgi_params;
scgi_pass 127.0.0.1:9000;
scgi_socket_keepalive on;
}
}
توضیح کد
کد بالا چکار میکند؟
1.
server {
: این خط نشاندهنده شروع یک بلوک سرور جدید است.2.
listen 80;
: nginx در پورت 80 به درخواستها گوش میدهد.3.
server_name example.com;
: تعیین میکند که این سرور برای دامنه example.com پاسخگو باشد.4.
location /scgi {
: تعریف یک بلوک location
برای مسیر /scgi.5.
include fastcgi_params;
: دریافت و تنظیم پارامترهای FASTCGI.6.
scgi_pass 127.0.0.1:9000;
: مشخص میکند که درخواستها به کدام آدرس و پورت SCGI ارسال شود.7.
scgi_socket_keepalive on;
: فعال کردن گزینه نگهداری اتصال SCGI برای کاهش بار و بهبود عملکرد.