ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: location /


  • To: nginx-ru@xxxxxxxxx
  • Subject: Re: location /
  • From: Gena Makhomed <gmm@xxxxxxxxx>
  • Date: Sun, 09 Oct 2011 14:15:36 +0300
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=csdoc.com; s=dkim; t=1318158937; bh=SAJV4A6tA33pWgc7IG0oQnnqwAa9ky4mUmndUuE33l8=; h=Message-ID:Date:From:MIME-Version:To:Subject:References: In-Reply-To:Content-Type:Content-Transfer-Encoding; b=I+BWQFOKR2x3aZWjxT9Pm9vxK0JE761vnHJRvWlF5qou/Rkh+8QDVzdvXoSzlemtL pIBlSKGwxssYO1qYN9KOoA5AssoWnwyAsyGhO6mcI3hfbr+jb9W7RF4ydqS5mHpN/u 1+2+CNw+75sENeNrKKdYS2GOReHcirQ775CTPQUE=
  • In-reply-to: <20111008210859.GR1137@xxxxxxxxxx>
  • References: <4E9056DF.4030701@xxxxxxxxx> <20111008210859.GR1137@xxxxxxxxxx>

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 /" не происходит, значит иногда такой конфиг вполне безопасен.

Ошибок там, 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 отрабатывает всего один раз.

например, судя по примерам к документации - "return 444;"
на уровне server работает без нюансов, вне зависимости
от наличия/отсутствия "location /" в конфиге этого server`а.

из этого можно сделать вывод, что в конфиге вполне можно писать

server {
    listen 11.22.33.44:80 default_server;
    server_name default-server;
    return 444;
}

server {
    server_name www.example.com;
    rewrite ^ http://example.com$request_uri? permanent;
    # или аналог через return 3xx uri / return 2xx text
}

server {
    server_name example.com;
    rewrite ^ https://example.com$request_uri? permanent;
    # или аналог через return 3xx uri / return 2xx text
}

без "location /", а во всех остальных случаях -
желательно будет явно указывать "location /" ?

и всегда желательно делать location-по-умолчанию "location /",
если в конфиге nginx присутствуют какие-либо другие location`ы.

так же как желательно будет делать и server-по-умолчанию, куда будут
попадать все запросы, для которых нет более специфичного server`а.

я ничего не упустил?

--
Best regards,
 Gena

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.