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

Nginx обратный кеш 301 редирект (постоянный)

Можно ли иметь кеш Nginx все 301 перенаправить запросы на proxy_pass?

Например:

Запрос №1: Клиент A запрашивает / some / path -> отправлено proxy_pass -> приводит к перенаправлению 301 на /some/other/path -> nginx кэширует этот ответ, поскольку это перенаправление 301.

Запрос №2: Клиент B запрашивает / some / path -> nginx возвращает кэшированное перенаправление 301 на /some/other/path.

nginx уже может кэшировать 301 редирект. Вы можете изменить время их кеширования с помощью proxy_cache_valid директива:

proxy_cache_valid 301 365d; # Cache permanent redirects for a whole year

Я обнаружил, что ответ @Michael доставил мне большую часть пути, но когда я включил proxy_cache, он автоматически кэширует файлы с Expires и Cache-Control. Итак, я пришел к этому решению.

proxy_cache_path /tmp/nginx levels=1:2 keys_zone=main-cache:8m max_size=1000m inactive=600m;
proxy_temp_path /tmp/nginx/tmp;
proxy_cache main-cache;
proxy_cache_valid 301 60m;
proxy_cache_key "$scheme://$host$request_uri";
proxy_ignore_headers X-Accel-Expires Expires Cache-Control;

Если вы хотите перенаправить все, вы можете использовать этот способ:

location / {
  proxy_pass http://127.0.0.1:8080/VirtualHostBase/https/$server_name:443/some/path/VirtualHostRoot;
}

В ваших примерах может потребоваться комбинация rewrite и proxy_pass:

location / {
  rewrite ^(.*)$ /VirtualHostBase/https/$server_name:443/some/path/VirtualHostRoot$1 break;
  proxy_pass http://127.0.0.1:8080;
}

Предупреждение: у вас другой переписать redirect эффект: break вместо этого возвращает 301 permanent возвращает 302.

РЕДАКТИРОВАТЬ Вверх по потоку этот модуль / модули, которые вам нужно использовать proxy_cache_valid директивный:

proxy_cache_valid  301 1h;

Предупреждение, директивы, связанные с кешем восходящего потока, имеют приоритет над значением proxy_cache_valid, в частности, порядок следующий:

  1. X-Accel-истекает
  2. Истекает / Cache-Control
  3. proxy_cache_valid

Ссылка: HttpProxyModule, Обратный прокси Nginx + перезапись URL