Respons nginx proxy_pass terpotong

9

Saya menggunakan permintaan nginx ke proxy https ke server aplikasi saya (saat ini berjalan pada 8443).
Server aplikasi ini menyajikan halaman dinamis, beberapa di antaranya termasuk jquery yang diperkecil.
Halaman-halamannya salah karena sepertinya jquery terpotong ... apakah ada batasan ukuran file atau sesuatu?

Conf nginx saya adalah sebagai berikut:

server {
listen      443;
server_name my_serv.com;
ssl                 on;
ssl_certificate     certificate.pem;
ssl_certificate_key privatekey.pem;

keepalive_timeout 70;

location / {
  proxy_pass https://localhost:8443;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header Host $http_host;
  proxy_buffering off;
  proxy_buffers 8 8k;
}
}
Luc
sumber
2
Periksa log kesalahan Anda. Ini akan memberi tahu Anda mengapa ada koneksi yang ditutup lebih awal.
kolbyjack
Mengapa Anda tidak membiarkan nginx untuk menyajikan file statis seperti jquery.js?
VBart

Jawaban:

8

Saya tahu pertanyaan ini sangat tua, tetapi saya hanya mengalami masalah yang sama. Pastikan pengguna Anda menjalankan nginx karena telah menulis hak istimewa ke direktori proxy_temp. Jika Anda melayani respons yang lebih besar melalui server proxy Anda yang tidak semuanya dapat disimpan di proxy_buffers Anda, sisa data respons akan ditulis ke disk di direktori proxy_temp Anda. Jika tidak bisa karena hak yang tidak memadai (atau sesuatu yang lain, yaitu ruang disk), maka respons akan terpotong.

Cara mudah untuk mengetahui apakah ini masalahnya adalah menghapus cache browser Anda, dan memuat ulang halaman dengan alat pengembang Chrome terbuka. Temukan file terpotong di tab jaringan, dan jika ukurannya sesuai dengan ukuran buffer proxy Anda (64k dalam kasus Anda) maka nginx kemungkinan memiliki masalah penulisan ke disk.

Info lebih lanjut tentang nginx proxy_temp_path: http://wiki.nginx.org/HttpProxyModule#proxy_temp_path

Steve
sumber
1
Jawaban Anda mengilhami saya untuk memecahkan masalah serupa
Tyler Long
0

Jika dalam log akses Anda melihat kode kembali 304 (Tidak Dimodifikasi) untuk file terpotong, cobalah untuk menghapus cache browser. Sayangnya, saya tidak dapat menemukan cara untuk 'memperbaiki' ini dari konfigurasi nginx.

Marius
sumber
-1

Ada, tetapi secara default 1G nya:

http://wiki.nginx.org/HttpProxyModule#proxy_max_temp_file_size

Seperti kata @kolbyjack, mungkin ada kesalahan dalam error.log untuk dilihat.

jumlahnya banyak
sumber
2
Itu hanya menentukan ukuran maksimum file temp dapat. nginx tidak akan memotong respons jika tidak semua bisa di-buffer, itu akan dilayani secara sinkron dari hulu.
kolbyjack