Welcome! Log In Create A New Profile

Advanced

Re: location /

Maxim Dounin
October 09, 2011 04:20PM
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;
}
}

И по понятным причинам будет цикл.

> например, судя по примерам к документации - "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 /" не обязательно. Конфигурация предельно однозначна и
без него (а с ним, наоборот, будет вызывать вопросы "а зачем это
тут? запросов ведь там никогда не будет").

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

Да.

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

Сервер по умолчанию - всегда есть, это первый описанный сервер на
данном сокете. Если используется debian и производные с их
"include *" - то да, имеет смысл описать его явно.

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

В целом всё правильно, некоторые комментарии выше.

Maxim Dounin

_______________________________________________
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: 158
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