Nginx обратный прокси на AWS Beanstalk и кэширование - PullRequest
0 голосов
/ 13 июля 2020

У меня установлен обратный прокси-сервер в AWS Beanstalk. Цель состоит в том, чтобы nginx извлекал значение из восходящего заголовка Location и сохранял результат с ключом кеша исходного URI запроса, чтобы будущим клиентам также не нужно было следовать перенаправлению.

Диск пространство достигает 68 ГБ здесь: / var / nginx / cache и 30 ГБ здесь: / var / nginx / temp-cache. Итак, дисковое пространство моего прокси-сервера заполняется довольно быстро.

Кто-нибудь знает, как я могу уменьшить или ограничить размер моего кеша? Или есть более эффективный способ сделать это, чтобы мой диск не заполнялся так быстро? Спасибо.

    worker_processes  1;
user       nginx;
pid        /var/run/nginx.pid;

events {
    worker_connections  65535;
}

worker_rlimit_nofile 30000;

http {
    proxy_cache_path /var/nginx/cache keys_zone=rev-origin:100m levels=1:2 inactive=7d max_size=80g;
    proxy_temp_path /var/nginx/temp-cache;

server {
    listen      80 default_server;
    access_log /var/log/nginx/access.log;
    error_log  /var/log/nginx/error.log;
    charset     utf-8;
    client_max_body_size 500M;
    gzip on;
    location / {
      proxy_pass https://123456abc.execute-api.us-east-1.amazonaws.com/AB/;
      proxy_ssl_server_name on;
      proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
      proxy_cache       rev-origin;
      proxy_cache_key   $uri;
      proxy_cache_valid 200 206 1d;
      proxy_intercept_errors on;
      recursive_error_pages on;
      error_page 301 302 307 = @handle_redirects;
    }

    location @handle_redirects {
      resolver 8.8.8.8;

      set $original_uri $uri;
      set $orig_loc $upstream_http_location;

      # nginx goes to fetch the value from the upstream Location header
      proxy_pass $orig_loc;
      proxy_cache       rev-origin;
      proxy_intercept_errors on;
      error_page 301 302 307 = @handle_redirect;
      # But we store the result with the cache key of the original request URI
      # so that future clients don't need to follow the redirect too
      proxy_cache_key $original_uri;
      proxy_cache_valid 200 206 3000h;
    }
  }
}

1 Ответ

0 голосов
/ 29 июля 2020

Я нашел решение, протестировав несколько модулей за последние несколько недель. Что, кажется, работает и уменьшает размер кеша, так это использование этих модулей:

  proxy_max_temp_file_size 1024m;
  proxy_buffer_size 4k;
  proxy_buffers 4 32k;
  proxy_busy_buffers_size 64k;
  proxy_temp_file_write_size 64k;
...