我在专用的 Ubuntu 14 服务器上运行了一个简单的 nginx 1.4.6 代理。我的配置如下:
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 加载时,Koa 在尝试写入时报告管道损坏错误,由于该问题仅发生在 nginx 上,所以我不认为这是 Koa 的错误。
知道我做错了什么吗?
答案1
首先检查 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;
}