GNU/Linux >> Belajar Linux >  >> Linux

Cara Memperbaiki 504 Gateway Timeout di Server Nginx

Saya menggunakan NGINX banyak. Saya baru-baru ini menerapkan Node.js aplikasi web dengan NGINX sebagai server proxy terbalik untuk itu. Salah satu fitur utama dari aplikasi ini adalah dukungan untuk impor data menggunakan template excel. Namun, tidak butuh waktu lama sebelum pengguna yang mengunggah file besar mulai mendapatkan 504 Gateway Timeout kesalahan dari NGINX .

[ Anda mungkin juga menyukai:Perbaiki Kesalahan Nginx:413 Permintaan Entitas Terlalu Besar ]

Apakah Anda mendapatkan kesalahan yang sama? Jangan khawatir, saya telah membantu Anda. Dalam artikel ini, saya akan menunjukkan cara memperbaiki 504 Gateway Timeout kesalahan dengan meningkatkan waktu tunggu permintaan di NGINX server web.

Meningkatkan Batas Waktu Permintaan di NGINX untuk Server Proksi

Jika Anda menggunakan NGINX sebagai proxy terbalik untuk server aplikasi seperti Node.js atau server web seperti Apache atau Gunicorn , maka Anda dapat meningkatkan waktu tunggu permintaan dengan menyetel parameter berikut baik di http , atau server , atau lokasi arahan.

Batas waktu dalam hitungan detik dan memastikan bahwa Anda harus menyetel nilai batas waktu yang akan bekerja secara efektif dan efisien untuk lingkungan Anda.

proxy_connect_timeout 75;
proxy_send_timeout 600;
proxy_read_timeout 600;

Dari nama-nama direktif, mudah untuk mengetahui batas waktu yang mereka tentukan. proxy_connect_timeout direktif menyatakan batas waktu untuk membuat koneksi dengan server proxy. Menurut dokumentasi resmi NGINX, nilainya tidak boleh melebihi 75 detik.

Direktif berikutnya proxy_send_timeout mendefinisikan batas waktu untuk mengirimkan permintaan ke server proxy. Perintah terakhir proxy_read_timeout menyetel batas waktu untuk membaca respons dari server proxy.

Sekarang setelah Anda memiliki sedikit pemahaman tentang arahan di atas, Anda dapat mengonfigurasinya seperti yang ditunjukkan. Di http konteks, Anda dapat mengaturnya di file konfigurasi utama NGINX yang terletak di /etc/nginx/nginx.conf .

http{
....
	proxy_read_timeout 600;
	proxy_connect_timeout 600;
	proxy_send_timeout 600;
....
In the server context, you can define them in a server block file for your application for example /etc/nginx/conf.d/example.com.conf:
server{
....
             proxy_read_timeout 600;
	 proxy_connect_timeout 600;
	 proxy_send_timeout 600;

             location  /  {
                try_files $uri $uri/ /index.html =404 =403 =500;
          }
          location  /api  {
                proxy_pass http://127.0.0.1:5000;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header Host $host;
               proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                
       }
}

Di blok lokasi, mereka akan terlihat seperti ini:

server{
....
             location  /  {
                try_files $uri $uri/ /index.html =404 =403 =500;
          }
          location  /api  {
                proxy_pass http://127.0.0.1:5000;
                proxy_read_timeout 600;
	        proxy_connect_timeout 600;
	        proxy_send_timeout 600;

               proxy_set_header X-Real-IP $remote_addr;
               proxy_set_header Host $host;
               proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       }
}

Simpan file dan tutup.

Untuk menerapkan perubahan terbaru, Anda harus memulai ulang NGINX layanan.

$ sudo systemctl restart nginx
OR
# systemctl restart nginx

Meningkatkan Batas Waktu Permintaan di NGINX untuk FastCGI

Untuk CGI Cepat server seperti PHP-FPM , Anda dapat menggunakan arahan berikut baik di http , atau server , atau lokasi :

fastcgi_connect_timeout 75;
fastcgi_send_timeout 600;
fastcgi_read_timeout 600;

Di lokasi blok untuk memproses file PHP, Anda dapat mendefinisikannya seperti yang ditunjukkan:

location ~ .php$ {
	fastcgi_pass unix:/run/lib/php7.4-fpm.sock;
	fastcgi_index index.php;
	fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
	include fastcgi_params;
	fastcgi_connect_timeout 75;
            fastcgi_send_timeout 600;
            fastcgi_read_timeout 600;
}

Jangan lupa untuk memulai ulang NGINX layanan setelah melakukan perubahan:

$ sudo systemctl restart nginx
OR
# systemctl restart nginx

Catatan :Anda mungkin juga harus membuat beberapa perubahan konfigurasi di php.ini dan PHP-FPM kumpulan file konfigurasi khusus untuk max_execution_time dan request_terminate_timeout arahan masing-masing.

Itu dia! Dalam artikel ini, kami melihat cara meningkatkan waktu tunggu permintaan di NGINX untuk memecahkan 504 Gateway timeout kesalahan. Untuk informasi lebih lanjut, baca dokumentasi NGINX. Untuk komentar apa pun, hubungi kami melalui formulir umpan balik di bawah.


Linux
  1. Cara Mengarahkan HTTP ke HTTPS di Nginx

  2. batas waktu gateway nginx 504

  3. Bagaimana cara mensimulasikan batas waktu respons server DNS?

  1. Cara Menginstal Nginx di Ubuntu 20.04

  2. Cara Menginstal Nginx di CentOS 8

  3. Cara Menginstal Nginx di CentOS

  1. Cara Meng-host Situs Web di Server Web NGINX

  2. Cara Menyembunyikan Tajuk Server Nginx

  3. Cara Memperbaiki 504 Gateway Time-out di Nginx