Nginx proxy_pass การตอบกลับถูกตัดทอน


9

ฉันใช้ nginx to proxy https คำขอไปยังเซิร์ฟเวอร์แอปพลิเคชันของฉัน (ทำงานอยู่ใน 8443)
เซิร์ฟเวอร์แอปนี้ให้บริการหน้าเว็บแบบไดนามิกบางหน้ารวมถึง jquery minified
หน้าเว็บมีข้อผิดพลาดเนื่องจากดูเหมือนว่า jquery ถูกตัดทอน ... มีการ จำกัด ขนาดไฟล์หรือบางอย่าง

nginx ของฉัน conf เป็นหนึ่งต่อไปนี้:

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;
}
}

2
ตรวจสอบบันทึกข้อผิดพลาดของคุณ ควรบอกคุณว่าเหตุใดการเชื่อมต่อใด ๆ จึงปิดเร็ว
kolbyjack

ทำไมคุณไม่ปล่อยให้ nginx ให้บริการไฟล์คงที่เช่น jquery.js
VBart

คำตอบ:


8

ฉันรู้ว่าคำถามนี้เก่ามาก แต่ฉันเพิ่งพบปัญหาเดียวกัน ตรวจสอบให้แน่ใจว่าผู้ใช้ที่คุณใช้งาน nginx นั้นมีสิทธิ์ในการเขียนไปยังไดเรกทอรี proxy_temp หากคุณให้บริการการตอบสนองที่ใหญ่กว่าผ่านพร็อกซีเซิร์ฟเวอร์ของคุณซึ่งไม่สามารถเก็บไว้ทั้งหมดใน proxy_buffers ของคุณข้อมูลการตอบสนองที่เหลือจะถูกเขียนไปยังดิสก์ในไดเรกทอรี proxy_temp ของคุณ หากไม่สามารถทำได้เนื่องจากสิทธิพิเศษไม่เพียงพอ (หรืออย่างอื่นเช่นพื้นที่ดิสก์) การตอบสนองจะถูกตัดทอน

วิธีง่ายๆในการบอกคือปัญหานี้คือการล้างแคชเบราว์เซอร์ของคุณและโหลดหน้าเว็บใหม่โดยเปิดเครื่องมือสำหรับนักพัฒนา Chrome ค้นหาไฟล์ที่ถูกตัดทอนในแท็บเครือข่ายและหากขนาดตรงกับขนาดบัฟเฟอร์พร็อกซีของคุณ (64k ในกรณีของคุณ) ดังนั้น nginx น่าจะมีปัญหาในการเขียนลงดิสก์

ข้อมูลเพิ่มเติมเกี่ยวกับ nginx proxy_temp_path: http://wiki.nginx.org/HttpProxyModule#proxy_temp_path


1
คำตอบของคุณเป็นแรงบันดาลใจให้ฉันแก้ปัญหาที่คล้ายกัน
Tyler Long

0

หากในไฟล์บันทึกที่คุณเห็นโค้ดส่งคืน 304 (ไม่ได้แก้ไข) สำหรับไฟล์ที่ถูกตัดทอนให้ลองล้างแคชของเบราว์เซอร์ น่าเสียดายที่ฉันไม่สามารถหาวิธี 'แก้ไข' สิ่งนี้ได้จากการกำหนดค่า nginx


-1

มี แต่โดยค่าเริ่มต้น 1G ของมัน:

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

เช่น @kolbyjack กล่าวว่าอาจมีข้อผิดพลาดใน error.log เพื่อดู


2
นั่นเป็นเพียงการกำหนดขนาดสูงสุดที่ไฟล์ temp สามารถ nginx จะไม่ตัดทอนการตอบกลับหากไม่สามารถบัฟเฟอร์ทั้งหมดได้ แต่จะให้บริการพร้อมกันจากต้นทาง
kolbyjack
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.