این خطا معمولا زمانی رخ میدهد که درخواست شما در بازه زمانی تنظیم شده آماده نشود. به صورت پیشفرض مقدار timeout برای درخواستهایی که از وب سرور Nginx عبور میکنند برابر با ۶۰ ثانیه است. یعنی از زمانی که وب سرور درخواست را دریافت میکند و به سرور بلاک مربوطه میفرستد، تا زمانی که جواب درخواست را دریافت کند و به کاربر ارسال کند نهایتا باید ۶۰ ثانیه انتظار بکشد. در این وضعیت اگر پروژه شما که توسط Nginx سرویسدهی میشود، پاسخ درخواست را به هر دلیلی در بازهای بیش از این مقدار آماده کند، خطای Gateway Time-out 504 رخ خواهد داد و کاربر به جای پاسخ درخواستش صفحهی زیر را مشاهده خواهد کرد.
افزایش مقدار Request Timeout در Nginx
چنانچه بخواهید این تنظیم بصورت مشترک بر روی تمام سرور بلاکهای شما اعمال شود، باید فایل تنظیمات Nginx را که در محل زیر قرار دارد باز کنید.
sudo vi /etc/nginx/nginx.conf
سپس در این فایل و در بلاک http تنظیمات زیر را قرار دهید. سپس فایل تنظیمات را ذخیره کرده و خارج شوید.
http{ ... proxy_read_timeout 300; proxy_connect_timeout 300; proxy_send_timeout 300; ... }
اما چنانچه بخواهید این تنظیم تنها بر روی یکی از هاستهای شما اعمال شود، تنها کافیست تا فایل تنظیمات nginx مربوط به هاست مورد نظرتان را بازکرده و تنظیمات زیر را در بلاک server قرار دهید.
server{ ... proxy_read_timeout 300; proxy_connect_timeout 300; proxy_send_timeout 300; ... }
مجدد در این حالت نیز فایل تنظیمات را ذخیره کرده و خارج شوید. برای این که اطمینان حاصل کنید که تنظیمات به درستی اعمال شده و خطای نگارشی ندارید. به کمک دستور زیر، فایلهای تنظیمات را مورد بررسی قرار دهید.
sudo nginx -t
چنانچه در پاسخ دستور بالا خطایی دریافت نکنید، تنظیمات به درستی نوشته شدهاند و آمادهی اعمال این تنظیمات بر روی هاستهای خود هستید.
برای این که تنظیمات بر روی هاستهای شما اعمال شود نیاز است تا nginx را reload یا restart کنید. برای این کار میتوانید از دستورات زیر استفاده کنید.
sudo service nginx reload systemctl restart nginx
همچنین میتوانید آموزش گام به گام نصب nginx در اوبونتو را در این آدرس مشاهده کنید.