Tuesday, 28 July 2009

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

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

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

rewrite ^ @name;

Write on: 17:20 | 8 comments | | tags: , , , , | permalink |
Add post to:   Delicious Reddit Slashdot Digg Technorati Google


Add comment

Pingbacks

anavar reviews @www.roids.online 18.03.2017 11:23

Comments

Roman 29.07.2009 17:53

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

reply
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,
reply
Kirill A. Korinskiy 27.09.2009 16:34

а что это дает?

reply
mayson 29.09.2009 7:39

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

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

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

reply
Kirill A. Korinskiy 29.09.2009 13:09

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

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

reply
mayson 30.09.2009 14:56

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

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

reply
Kirill A. Korinskiy 30.09.2009 23:58

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

reply

Comment form for «nginx: rewrite в именованный location»

Required. 30 chars of fewer.

Required.