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
|