Welcome! Log In Create A New Profile

Advanced

Re: location /

October 12, 2011 06:14AM
On Mon, Oct 10, 2011 at 12:18:35AM +0400, Maxim Dounin wrote:
> Hello!
>
> On Sun, Oct 09, 2011 at 02:15:36PM +0300, Gena Makhomed wrote:
>
> > On 09.10.2011 0:08, Maxim Dounin wrote:
> >
> > >>Когда-то Максим говорил, что в конфигурации всегда желательно
> > >>указывать "location /", но в примерах на сайте http://nginx.org/
> > >>не всегда указывается "location /", например, In catch-all server
> > >>examples, на странице http://nginx.org/en/docs/http/server_names.html
> >
> > >>Вопрос: "всегда указывать location /" - это была рекомендация,
> > >>чтобы обойти какие-то глюки в старых версиях nginx, и сейчас,
> > >>в nginx 1.x.х это уже не актуально? или и сейчас есть какие-то случаи,
> > >>когда nginx не будет нормально работать без "location /" в конфиге ?
> >
> > >Это была рекомендация, чтобы не взорвать себе мозг деталями логики
> > >работы, и спокойно спать по ночам.
> >
> > но ошибок и предупреждений при тестировании конфига, когда в нем нет
> > "location /" не происходит, значит иногда такой конфиг вполне безопасен.
>
> Никто не утверждал, что он опасен. Он делает ровно то, что
> сказано. Вопрос исключительно в том, хочется ли тому, кто пишет
> конфиг, разбираться в том, как именно поймёт nginx написанное.
>
> > >Ошибок там, AFAIK, сейчас нет, а вот нюансы присутствуют.
> > >Например, вот эти два конфига радикально отличаются:
> >
> > > server {
> > > rewrite ^(.*) /prefix$1;
> > > }
> >
> > > server {
> > > rewrite ^(.*) /prefix$1;
> > >
> > > location / {
> > > # nothing here
> > > }
> > > }
> >
> > в первом случае происходит зацикливание rewrite or internal redirection
> > cycle while processing "/prefix/prefix/prefix/prefix/prefix/prefix/...."
> > а во втором rewrite на уровне server отрабатывает всего один раз.
>
> Именно.
>
> И причина, в общем-то, очевидна - если знать нюансы. В первом
> конфиге на самом деле написано нечто вроде:
>
> server {
> rewrite ^(.*) /prefix$1;
>
> location / {
> rewrite ^(.*) /prefix$1;
> }
> }
>
> И по понятным причинам будет цикл.

Патч для предотвращения цикла.


--
Igor Sysoev
Index: src/http/ngx_http_core_module.c
===================================================================
--- src/http/ngx_http_core_module.c (revision 4201)
+++ src/http/ngx_http_core_module.c (working copy)
@@ -907,11 +907,23 @@
ngx_int_t
ngx_http_core_rewrite_phase(ngx_http_request_t *r, ngx_http_phase_handler_t *ph)
{
- ngx_int_t rc;
+ ngx_int_t rc, index;
+ ngx_http_core_srv_conf_t *cscf;
+ ngx_http_core_main_conf_t *cmcf;

ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
"rewrite phase: %ui", r->phase_handler);

+ cmcf = ngx_http_get_module_main_conf(r, ngx_http_core_module);
+ cscf = ngx_http_get_module_srv_conf(r, ngx_http_core_module);
+ index = cmcf->phase_engine.location_rewrite_index;
+
+ if (r->phase_handler == index && r->loc_conf == cscf->ctx->loc_conf) {
+ /* skipping location rewrite phase for server null location */
+ r->phase_handler++;
+ return NGX_AGAIN;
+ }
+
rc = ph->handler(r);

if (rc == NGX_DECLINED) {
_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

location /

Gena Makhomed October 08, 2011 09:58AM

Re: location /

Михаил Монашёв October 08, 2011 10:24AM

Re: location /

Maxim Dounin October 08, 2011 05:10PM

Re: location /

Gena Makhomed October 09, 2011 07:16AM

Re: location /

Maxim Dounin October 09, 2011 04:20PM

Re: location /

Gena Makhomed October 10, 2011 08:32AM

Re: location /

Igor Sysoev October 11, 2011 05:54AM

Re: location /

Gena Makhomed October 11, 2011 07:20AM

Re: location /

Igor Sysoev October 12, 2011 05:26AM

Re: location /

Gena Makhomed October 11, 2011 07:48AM

Re: location /

Igor Sysoev October 12, 2011 06:14AM

Re: location /

Gena Makhomed October 18, 2011 02:48PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 155
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready