ПРОЕКТЫ 


  АРХИВ 


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: proxy cache key и fastcgi cache key



On Friday 10 January 2014 22:51:17 Gena Makhomed wrote:
> On 10.01.2014 15:07, Валентин Бартенев wrote:
> 
> >>>>>> Кому интересно почитать, подробней вот ссылка.
> >>>>>> http://habrahabr.ru/post/166855/
> ...
> >> $host
> >> in this order of precedence: host name from the request line, or host
> >> name from the ?Host? request header field, or the server name matching a
> >> request
> ...
> > Единственный правильный способ: пойти в IETF с предложением исправить
> > соответствующие RFC, которые в том числе оговаривают, что следует делать
> > при получении нескольких заголовков Host, ну а потом уже сюда.
> 
> с RFC то как раз все в порядке: "network location of the URI
> (authority) MUST be transmitted in a Host header field",
> только вот nginx не соответствует этим требованиям...
> 
> http://tools.ietf.org/search/rfc2616#section-5.1.2
[..]

Если почитать внимательнее, то приведенные требования относятся к клиенту.
Понятно, что сервер в принципе не может влиять на то, что transmitted в
запросе.

Что касается сервера, написано буквально секцией ниже:
http://tools.ietf.org/search/rfc2616#section-5.2

5.2 The Resource Identified by a Request

   The exact resource identified by an Internet request is determined by
   examining both the Request-URI and the Host header field.

   An origin server that does not allow resources to differ by the
   requested host MAY ignore the Host header field value when
   determining the resource identified by an HTTP/1.1 request. (But see
   section 19.6.1.1 for other requirements on Host support in HTTP/1.1.)

   An origin server that does differentiate resources based on the host
   requested (sometimes referred to as virtual hosts or vanity host
   names) MUST use the following rules for determining the requested
   resource on an HTTP/1.1 request:

   1. If Request-URI is an absoluteURI, the host is part of the
     Request-URI. Any Host header field value in the request MUST be
     ignored.

   2. If the Request-URI is not an absoluteURI, and the request includes
     a Host header field, the host is determined by the Host header
     field value.

   3. If the host as determined by rule 1 or 2 is not a valid host on
     the server, the response MUST be a 400 (Bad Request) error message.

   Recipients of an HTTP/1.0 request that lacks a Host header field MAY
   attempt to use heuristics (e.g., examination of the URI path for
   something unique to a particular host) in order to determine what
   exact resource is being requested.

Ровным счетом так nginx и поступает, если передан absoluteURI, то виртуальный
сервер определяется по нему, а заголовок Host игнорируется.

--
Валентин Бартенев
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.