Назад | Перейти на главную страницу

Nginx - Кеширование / обработка данных при загрузке файла через обратный прокси

Я использую несколько виртуальных машин (Proxmox), каждая из которых имеет ограниченный объем хранилища. Поскольку я также использую службу загрузки файлов, меня интересует, требуется ли обратному прокси-серверу более 30 ГБ памяти.

У меня есть 1 обратный прокси, который перенаправляет на 3 веб-сервера.

Будет ли использоваться хранилище (или кеш?) Обратного прокси, если кто-то загружает 50 ГБ данных на веб-серверы?

Да. По умолчанию nginx кеширует тело запроса. Итак, если вы загружаете 50 ГБ на 5 серверов, ваш обратный прокси-сервер должен будет хранить все 50 ГБ. (при условии, что загрузка происходит одновременно)

Вы можете отключить это с помощью директивы proxy_request_buffering. Прочтите документацию, чтобы узнать, как его настроить, так как есть некоторые ограничения: http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_request_buffering

Ваш пост в меру непонятен. Я не думаю, что вы имеете в виду кеширование nginx fastcgi, но вы могли бы.

Nginx делает то, что вы ему приказываете. Если вы используете proxy_pass, я понимаю, что он просто передает соединение на следующий сервер, он не получает загрузку, а затем отправляет ее на себя. т.е. nginx действует как прокси-сервер подключения.

Если вы говорите о кешировании nginx fastcgi, то вы просто отключите его. Следующее отключает кеширование двумя способами - для POST и на основе набора правил. Используйте те биты, которые считаете подходящими.

server {
  ...
  set $skip_cache 0;
  if ($request_method = POST) {
    set $skip_cache 1;
  }
  if ($query_string != "") {
    set $skip_cache 1;
  }
  # Don't cache uris containing the following segments.
  if ($request_uri ~* "/wp-admin/|/admin-*|/purge*|/xmlrpc.php|wp-.*.php|/feed/|sitemap(_index)?.xml") {
    set $skip_cache 1;
  }
  # Don't use the cache for logged in users or recent commenters
  if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in|code") {
    set $skip_cache 1;
  }

  location ~ \.(hh|php)$ {
    fastcgi_cache CACHE_NAME;
    fastcgi_cache_valid 200 1440m;

    fastcgi_cache_methods GET HEAD;
    fastcgi_cache_bypass $skip_cache;
    fastcgi_no_cache $skip_cache;
  }