我正在尝试为 nginx 中相对不同的使用场景和资源消耗配置两个 URL 路径组。两者都由同一个 uwsgi 应用程序提供服务。
- 第 1 组:常规 HTML 页面大小最多为 cca 128k,默认
- 第 2 组:大型 XML“文件”,大小可达数 MB(由应用程序动态创建)
要求是两者都经过 gzip 压缩,并且 XML 也应该缓存 1 小时。
我不太明白缓冲区数量的含义,以及如何根据预期的流量和内容大小最佳地设置它们的数量和大小,无论是对于 uwsgi 还是 gzip。
另外,对于以下配置,我从 nginx 收到错误:
"uwsgi_busy_buffers_size" must be less than the size of all "uwsgi_buffers" minus one buffer in /etc/nginx/nginx.conf:113
uwsgi_busy_buffers_size 似乎没有记录。
location ~ /path/to/(.+)\.xml {
uwsgi_hide_header "Set-Cookie";
uwsgi_ignore_headers "Set-Cookie";
uwsgi_buffers 2 8M;
uwsgi_cache xmlfiles;
uwsgi_cache_key $request_uri;
uwsgi_cache_valid 200 1h;
uwsgi_cache_valid 04 5m;
uwsgi_cache_use_stale error;
expires +1h;
gzip on;
gzip_types application/xml;
gzip_buffers 2 8M;
try_files $uri @backend;
}
location / {
try_files $uri @backend;
gzip on;
gzip_buffers 8 256k;
uwsgi_buffers 8 256k;
try_files $uri @backend;
}
location @backend {
include uwsgi_params;
uwsgi_pass unix:///tmp/uwsgi-app.sock;
}
请帮忙。nginx 1.0.14
答案1
uwsgi_busy_buffers_size
与 含义相同fastcgi_busy_buffers_size
,但是针对的是 uwsgi。
限制在响应尚未完全读取时忙于向客户端发送响应的缓冲区的总大小。同时,其余缓冲区可用于读取响应,如果需要,还可以将部分响应缓冲到临时文件。默认情况下,大小受 uwsgi_buffer_size 和 uwsgi_buffers 指令设置的两个缓冲区的限制。
ps nginx 中缓冲区相关指令的默认值在大多数情况下都有最佳值。因此,只有当您完全了解自己在做什么以及为什么这样做时,才应该调整它们。
答案2
顺便提一下,每个 gzip 缓冲区允许的最大大小为8k
。
为了获得相同的整体尺寸,您需要使用gzip_buffers 2048 8k;
。
我不确定是否有同样的限制uwsgi_buffers
。
一般来说,拥有更多可用的小缓冲区比拥有几个巨大的缓冲区更好。