Nginx proxy_pass phản hồi bị cắt ngắn


9

Tôi sử dụng nginx để proxy https yêu cầu đến máy chủ ứng dụng của tôi (hiện đang chạy trên 8443).
Máy chủ ứng dụng này phục vụ các trang động, một số trong số chúng bao gồm jquery rút gọn.
Các trang bị lỗi vì có vẻ như jquery bị cắt ngắn ... có giới hạn kích thước tệp hay không?

Conf nginx của tôi là một trong những sau đây:

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
Kiểm tra nhật ký lỗi của bạn. Nó sẽ cho bạn biết lý do tại sao bất kỳ kết nối đã được đóng lại sớm.
kolbyjack

Tại sao bạn không để nginx phục vụ các tệp tĩnh như jquery.js?
VBart

Câu trả lời:


8

Tôi biết câu hỏi này là siêu cũ, nhưng tôi chỉ gặp vấn đề tương tự. Đảm bảo người dùng bạn đang chạy nginx có quyền ghi vào thư mục proxy_temp. Nếu bạn đang phục vụ một phản hồi lớn hơn thông qua máy chủ proxy mà tất cả không thể được giữ trong proxy_buffers của bạn, phần còn lại của dữ liệu phản hồi sẽ được ghi vào đĩa trong thư mục proxy_temp của bạn. Nếu không thể vì đặc quyền không đủ (hoặc thứ gì khác, tức là dung lượng đĩa), thì phản hồi sẽ bị cắt ngắn.

Một cách dễ dàng để nói là đây là vấn đề là xóa bộ nhớ cache của trình duyệt và tải lại trang với các công cụ dành cho nhà phát triển Chrome đang mở. Tìm tệp bị cắt bớt trong tab mạng và nếu kích thước khớp với kích thước bộ đệm proxy của bạn (64k trong trường hợp của bạn) thì nginx có thể gặp sự cố ghi vào đĩa.

Thông tin thêm về nginx proxy_temp_path: http://wiki.nginx.org/HttpProxyModule#proxy_temp_path


1
Câu trả lời của bạn đã truyền cảm hứng cho tôi để giải quyết một vấn đề tương tự
Tyler Long

0

Nếu trong nhật ký acc bạn đang thấy mã trả về 304 (Không được sửa đổi) cho tệp bị cắt, hãy thử xóa bộ nhớ cache của trình duyệt. Thật không may, tôi không thể tìm cách 'sửa' cái này từ cấu hình nginx.


-1

Có, nhưng theo mặc định 1G của nó:

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

Giống như @kolbyjack đã nói, có thể có lỗi trong lỗi.log để xem xét.


2
Điều đó chỉ xác định kích thước tối đa một tệp tạm thời có thể. nginx sẽ không cắt bớt phản hồi nếu tất cả không thể được đệm, nó sẽ được phục vụ đồng bộ từ thượng nguồn.
kolbyjack
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.