Я пытаюсь настроить две группы URL-адресов для относительно разных сценариев использования и потребления ресурсов в nginx. Оба обслуживаются одним приложением uwsgi.
Требуется, чтобы оба файла были сжаты с помощью 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
uwsgi_busy_buffers_size
имеет то же значение, что и fastcgi_busy_buffers_size
, но для uwsgi.
Ограничивает общий размер буферов, которые могут быть заняты отправкой ответа клиенту, пока ответ еще не полностью прочитан. В то же время остальные буферы могут использоваться для чтения ответа и, если необходимо, буферизации части ответа во временный файл. По умолчанию размер ограничен двумя буферами, установленными директивами uwsgi_buffer_size и uwsgi_buffers.
p.s. значения по умолчанию для директив, связанных с буферами, в nginx имеют оптимальные значения для большинства случаев. Поэтому настраивать их следует только в том случае, если вы полностью понимаете, что делаете и почему.
Как примечание, максимально допустимый размер для каждого буфера gzip составляет 8k
.
Чтобы получить тот же общий размер, вам нужно будет использовать gzip_buffers 2048 8k;
.
Я не уверен, применяется ли такое же ограничение к uwsgi_buffers
.
В общем, лучше иметь больше маленьких буферов, чем несколько огромных буферов.