Как создать регулярное выражение в nginx, чтобы сломать кеш браузера? - PullRequest
1 голос
/ 25 октября 2019

Я программист, поэтому не уверен, что мне снится, думаю ли я, что я могу сделать такую ​​логику в том, что должно быть файлом конфигурации. Просто то, что мне нужно, это ответ nginx, такой, что запросы, которые включают / cacheXXX, должны удалить эту часть URL.

Итак:

/cache123/editor/editor.js -> /editor/editor.js

/cache456/admin/editor.css -> /admin/editor.css

/cache987/editor/editor.js -> /editor/editor.js

И поэтому все остальное следует игнорировать, например:

/hello/editor/editor.js -> /hello/editor/editor.js

Ключевым моментом здесь является то, что если URLсовпадения:

/ cache XXX

Затем удалить эту часть и вернуть остальные.

Как будет выглядеть запись местоположения nginxэто выглядит как?

Для контекста, с этой точки зрения, я пытаюсь сломать кеш браузера, предоставляя новые URL для обновленных ресурсов, изменяя путь к ресурсу, а не изменяя параметры URL, которые не 'т гарантировано.

1 Ответ

0 голосов
/ 25 октября 2019

Одним из решений является использование местоположения регулярного выражения для выбора URI, начинающихся с /cache, и извлечения части имени файла для возврата правильного файла.

Например (при условии, что rootопределяется где-то):

location ~ ^/cache[0-9]+(/.*) {
    try_files $1 =404;
}

Регулярное выражение location вычисляется по порядку, поэтому его относительное положение в файле конфигурации является значимым. Подробнее см. этот документ .


Вы также можете использовать правило перезаписи, например:

rewrite ^/cache[0-9]+(/.*) $1 last;

См. этот документ для получения более подробной информации.


Для максимальной эффективности оберните любую технику в префикс location, например:

location ^~ /cache {
    rewrite ^/cache[0-9]+(/.*) $1 break;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...