nginx - ответ на основании запрошенного заголовка - PullRequest
5 голосов
/ 07 февраля 2012

У меня установлен nginx 1.0.8.вот моя проблема: у меня есть 2 файла: file1.js и file2.js .запрошенный путь выглядит примерно так:

www.mysite.com / files_dir /% user% / file.js

Если запрошенный заголовок: "X-заголовок"существует и имеет значение" OK", тогда отвечаемое содержимое должно быть file1.js, иначе file2.js.

Файлы находятся в" html / files_dir"и% user% - это набор каталогов, представляющих имена пользователей, зарегистрированные через мою службу.

Как мне настроить это в nginx?Я не заинтересован в php, asp или подобных технологиях, только если это возможно с nginx.

Спасибо

Ответы [ 2 ]

9 голосов
/ 07 февраля 2012

map позволяет определить значение переменной на основе другой переменной. map должно быть объявлено на уровне http (т.е. вне server):

map $http_x_header $file_suffix {
  default "2";
  OK      "1";
};

Тогда следующий location должен сделать трюк, используя вашу новую переменную $file_suffix

location ~ ^(/files_dir/.+)\.js$ {
  root html;
  try_files $1$file_suffix.js =404;
}
1 голос
/ 07 февраля 2012

Вы можете сделать это с помощью nginx очень легко. Это пример:

location /files_dir/ {

    set $file = file2.js;
    if ( $http_x_header = OK ) {
        set $file = file1.js;
    }
    rewrite ^(/files_dir/.*)/file.js$ $1/$file last;

}

Вы можете прочитать о HTTP-переменных в NGINX здесь и о модуле перезаписи nginx здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...