rad*_*rad 21 nginx reverse-proxy buffer
我正在尝试在我的 Ubuntu机器上设置Madsonic并在它前面运行 Nginx。问题是,当我尝试通过 Web 界面上传内容时,我不断收到此警告:
31115#0: *14 a client request body is buffered to a temporary file
Run Code Online (Sandbox Code Playgroud)
这也解释了为什么上传窗口上的进度条不起作用。这是我的相关 Nginx 配置:
# proxy the madsonic server here
location / {
proxy_pass https://madsonic-server/;
proxy_redirect off;
proxy_buffering off;
proxy_request_buffering off;
allow all;
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Forwarded-Proto $scheme;
client_body_buffer_size 0;
client_max_body_size 0;
proxy_max_temp_file_size 0;
proxy_read_timeout 18000;
proxy_send_timeout 18000;
gzip off;
}
Run Code Online (Sandbox Code Playgroud)
我目前使用的是 Nginx 1.9.12。
我想要实现的是让 Nginx 根本不使用请求正文缓冲区,而只是将请求正文直接传递给 Madsonic,而不管大小。这甚至可能吗?如果是,那么正确的配置是什么?
其他问题似乎可以通过设置缓冲区大小的方法来回答。我不想要任何缓冲区。我想直接将请求正文传递给 Madsonic。
Hal*_*aar 24
我在为 Docker 注册表设置 Nginx 代理时遇到了同样的问题。我最终做了:
client_max_body_size 0;
proxy_http_version 1.1;
proxy_request_buffering off;
Run Code Online (Sandbox Code Playgroud)
client_max_body_size
仍然必须为 0 以防止错误,但watch -n 1 du -hs .
清楚地显示出差异。缓冲使数据出现在请求之后,没有缓冲使它出现在请求期间。
proxy_http_version 1.1
由于分块编码,这是必要的。引自 Nginx 文档:
当使用 HTTP/1.1 分块传输编码发送原始请求正文时,除非为代理启用 HTTP/1.1,否则无论指令值如何,请求正文都将被缓冲。
归档时间: |
|
查看次数: |
23454 次 |
最近记录: |