Net:: ERR_INCOMPLETE_CHUNKED_ENCODING nginx
У меня есть 2 веб-приложения RoR, размещенных на 2 разных серверах. Для одной конкретной страницы запрос подается из второго приложения. Для остальных страниц запрос подается из основного приложения. Настройки Nginx для основного приложения
location /customer/help/ {
proxy_pass http://second-application:3020/help_and_support/;
}
location /assets/ {
proxy_pass http://second-application:3020/assets/;
}
Это работало нормально до вчерашнего дня. Теперь страница /customer/help/
загружается неправильно. В Firefox он показывает пустую страницу, в Chrome он загружается частично и консоль показывает ошибку
net::ERR_INCOMPLETE_CHUNKED_ENCODING
После отладки я обнаружил, что проблема может быть связана с данными изображения, отправленными через API. Мое второе приложение вызывает API для получения изображений и отображает их на странице
<% url_with_binary_data = "data:image/" + "jpeg" + ";base64," + u.photo_url.to_s %>
<%= image_tag(url_with_binary_data, :class => "userpic") %>
API-код для получения изображения
photo_url: Base64.encode64(u.photo.file.read).gsub("\n", '')
Ответы
Ответ 1
Возможно, вы захотите проверить, владеет ли пользователь, работающий с рабочим Nginx, каталогом /var/lib/nginx
.
Я узнал, что, когда вы даете ответ слишком большой для Nginx, он использует этот каталог для записи в качестве рабочего каталога для временных файлов. Если рабочий процесс не может получить к нему доступ, Nginx завершит передачу до его завершения, таким образом, будет ошибка INCOMPLETE_CHUNKED_ENCODING.
Ответ 2
В этой проблеме возникла проблема с AWS и выяснилось, что добавление нескольких директив proxy_buffer в файл конфигурации сайта устраняет проблемы:
server {
...
location / {
...
proxy_buffers 8 1024k;
proxy_buffer_size 1024k;
}
}
Ответ 3
Для меня решение было тем, что рекомендовал DfKimer, но вместо /var/lib/nginx
он был /var/cache/nginx
.
Ответ 4
Для меня решением было разрешение proxy_max_temp_file_size
Ответ 5
proxy_set_header Keep-alive соединения;
Полная конфигурация
server {
listen 0000; #//port give by your need
server_name aa.com;
proxy_buffers 16 4k;
proxy_buffer_size 2k;
#charset koi8-r;
#access_log logs/host.access.log main;
location ~ ^/hello/{
proxy_buffering off;
proxy_pass http://127.0.0.1:1111; #//port give by your need
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Connection keep-alive;
}
Ответ 6
Если прокси-сервер не может записывать в /var/lib/nginx
, вам не нужно играть с правами доступа к файлам или владением этим каталогом. Вы можете изменить каталог кеша nginx для контекста:
proxy_temp_path /home/emre/projects/frontend/nginx_temp 1 2;
внутри контекста http
, server
или location
файла nginx.conf
.
проверьте http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_temp_path
Ответ 7
Я получил эту ошибку из-за переполнения памяти сервера. надеюсь, это поможет любому в будущем.