Вторник, 28 Июль 2009

nginx: rewrite в именованный location

В nginx есть интересный механизм «именованных» location.

Сейчас нет красивого способа туда попасть. Собственно не большой патч, который добавляет возможность делать:

rewrite ^ @name;

Написано в: 17:20 | 8 комментариев | | теги: , , , , | постоянная ссылка |
Добавить пост в:   Delicious Reddit Slashdot Digg Technorati Google


Последние комментарии

Комментарии

Roman 29.07.2009 17:53

error_page 345 = @name; return 345; Это некрасиво? :-)

ответить
mayson 27.09.2009 9:38

Я делаю так: try_files @name;

--- nginx-0.7~/src/http/ngx_http_core_module.c  2009-04-15 16:53:22.000000000 +0700
+++ nginx-0.7/src/http/ngx_http_core_module.c   2009-04-26 02:49:25.000000000 +0700
@@ -547,7 +547,7 @@
       NULL },

     { ngx_string("try_files"),
—      NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_2MORE,
+      NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_1MORE,
       ngx_http_core_try_files,
       NGX_HTTP_LOC_CONF_OFFSET,
       0,
ответить
mayson 29.09.2009 7:39

Задача — попасть в именованный location.

try_files файл [файл …] (uri|=код) В случае, если ни один файл не найден, то делается внутренний редирект на последний параметр, который может быть именовынным location.

Посмотрев по коду, обнаружил, что редирект делается действительно по последнему параметру, даже если он всего один. Таким образом, разрешаем в конфиге минимум 1 параметр к try_files и используем try_files @location.

ответить
Kirill A. Korinskiy 29.09.2009 13:09

Помойму это костыль большей, чем обучить rewrite.

И rewrite, наверное, симантическей правильнее.

ответить
mayson 30.09.2009 14:56

Не готов дискутировать по этому поводу. Просто предложил ещё один вариант решения.

Хотя, признаю, что в случае c rewrite появляется бОльшая гибкость, т.к. идёт проверка по регулярному выражению.

ответить
Kirill A. Korinskiy 30.09.2009 23:58

Жаль, что Игорь этот код не воткнет в upstream.

ответить

Форма комментирования для «nginx: rewrite в именованный location»

Обязательное поле. Не больше 30 символов.

Обязательное поле