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

nginx: парсить UA и try_files по частям UA

Что дано:

  1. версия nginx: nginx / 1.9.3;
  2. / var / www / site / js /site.chrome.js - код, специфичный для хрома;
  3. / var / www / site / js /site.firefox.js - код, специфичный для firefox;
  4. site.chrome.js и site.firefox.js выбираются на стороне браузера в зависимости от того, в каком браузере выполняется код;
  5. UA: Mozilla / 5.0 (X11; Linux x86_64) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 44.0.2403.155 Safari / 537.36

Проблема: вместо того, чтобы указывать в браузере, какие два файла JS должны быть загружены, я хотел бы выгрузить эту задачу на сервер nginx, чтобы

  1. браузер просто указывает на URL-адрес, например http://server.com/js/site.js
  2. nginx анализирует UA, экстракты Операционные системы, имя браузера, и это версия и ищет site.js в следующей структуре каталогов:
js
 |
 +-site.js
 |
 +-linux
     |
     +-chrome
     |   |
     |   +-site.js
     |   |
     |   +-44
     |   |  |
     |   |  +-site.js
В js / site.js следует рассматривать как запасной вариант, что означает, что если nginx не сможет найти подходящий site.js вниз по дереву он использует файл js / site.js.

Учитывая вышеупомянутый UA, nginx должен искать site.js, выполнив следующие действия:

  1. js / Linux / Chrome / 44 / site.js
  2. js / linux / chrome / site.js
  3. js / linux / site.js
  4. js / site.js

Вопросы следующие:

  1. Имеет ли вообще какой-либо смысл такой способ организации файлов, специфичных для браузера, в дереве каталогов, и если да ...
  2. Можно ли реализовать этот подход на сервере nginx;