У меня есть простой прокси nginx 1.4.6, работающий на выделенном сервере Ubuntu 14. Моя конфигурация выглядит так:
server {
listen 80;
listen 443 ssl;
listen [::]:80;
listen [::]:443 ssl;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:44400;
proxy_set_header Host $host;proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
Когда я пытаюсь достичь этот файл время ожидания истекает после отправки небольшой части. Он всегда останавливается на одной и той же строке.
Бэкэнд работает на сервере Node.js / Koa, файл может быть загружен напрямую без каких-либо проблем.
При загрузке через nginx Коа сообщает об ошибке сломанного канала при попытке записи, поскольку проблема возникает только с nginx, я не думаю, что это вина Коа.
Есть идеи, что я делаю не так?
Сначала проверьте логи nginx. Это помогает вам (и нам) понять ошибку.
tail -f /var/log/nginx/error.log
Возможная проблема - неправильные разрешения (владелец пользователя) для папки nginx tmp
cd /var/lib/nginx/tmp/proxy/ && ls -la
Проверьте конфигурацию nginx на наличие поля "пользователь xxxx" (например, пользователь apache; ")
grep "user " /etc/nginx/*
Найденный пользователь должен быть владельцем каталога nginx tmp. Так, например, если ваш пользователь nginx - apache, а владелец каталогов nginx tmp - другой - измените его на apache.
chown -R apache:apache /var/lib/nginx/*
Также проверьте состояние памяти / диска:
htop
df -h
Надеюсь, это тебе поможет.
А как насчет отправки статического контента прямо из nginx?
location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|swf)$ {
root your/content/root/path;
error_page 404 = @fallback;
}