Проблемы с nginx в режиме proxy_pass с amazon и chrome/chromium
Konstantin Pavlov
thresh на videolan.org
Пн Дек 12 11:41:58 UTC 2011
Добрый день.
Есть некоторые проблемы с google chrome / chromium и nginx при
использовании nginx как кэширующего сервера для забирания bucket'ов с
amazon.
Примерно один из 10ти запросов на mp3-файл приводит к тому, что google
chrome / chromium не воспроизводит этот mp3-файл. При запросах напрямую
на amazon bucket проблема не проявляется.
/etc/nginx/nginx.conf:
worker_processes 30;
events {
worker_connections 1024;
}
http {
client_max_body_size 1024m;
proxy_connect_timeout 30s;
proxy_read_timeout 60s;
proxy_send_timeout 60s;
proxy_cache_path /var/lib/nginx/tmp/proxy/cache/ keys_zone=cache:1024m max_size=30000m;
merge_slashes off;
ignore_invalid_headers off;
proxy_temp_path /var/lib/nginx/tmp/proxy;
fastcgi_temp_path /var/lib/nginx/tmp/fastcgi;
client_body_temp_path /var/lib/nginx/tmp/client;
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] '
'"$request" $status $bytes_sent $sent_http_content_length '
'"$http_user_agent" "$http_x_forwarded_for"';
keepalive_timeout 0;
sendfile off;
gzip off;
server {
listen 80;
server_name download-mp3.domain.tld;
location = /favicon.ico {
return 204;
}
location / {
proxy_pass http://downloadtld-mp3.s3.amazonaws.com/;
proxy_next_upstream error timeout http_500 http_502 http_503 http_504;
proxy_redirect off;
proxy_cache cache;
proxy_cache_valid 1d;
expires 604800;
proxy_hide_header X-Amz-Id-2;
proxy_hide_header X-Amz-Request-Id;
proxy_hide_header ETag;
proxy_hide_header Last-Modified;
}
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log debug;
}
}
При возникновении проблемы, в error.log трижды пишется "client closed
prematurely connection while reading upstream".
От файла не зависит, при вызове URL в строке браузера один раз может пройти
ошибка, второй раз файл может закачаться и воспроизводиться нормально.
Сслучается такое и на файлы, которые уже должны быть в кэше, т.е. когда иду по
списку URL'ов заново, оно опять может проявиться на тех файлах, на которые уже
были запросы.
debug_connection по моему адресу выдаёт огромную тонну информации, разобраться
что именно идёт не так не получается.
Что может быть не так?
--
Konstantin Pavlov
VideoLAN team
Подробная информация о списке рассылки nginx-ru