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 19:40:07 S.A.N wrote:
> > Ровным счетом так nginx и поступает, если передан absoluteURI, то
> > виртуальный
> > сервер определяется по нему, а заголовок Host игнорируется.
>
> Ровным счетом так же должен поступать и бекенд, игнорировать заголовок Host,
> если передан absoluteURI.
> Но дело в том что бекенд не получает, raw запрос с absoluteURI, именно по
> этой причине бекенду необходимо передать, то значения HTTP_HOST, которое
> использовал Nginx для определения вирт хоста.
Значение HTTP_HOST относится к FastCGI и определяется другим RFC, в котором
сказано:
Meta-variables with names beginning with "HTTP_" contain values read
from the client request header fields, if the protocol used is HTTP.
The HTTP header field name is converted to upper case, has all
occurrences of "-" replaced with "_" and has "HTTP_" prepended to
give the meta-variable name. The header data can be presented as
sent by the client, or can be rewritten in ways which do not change
its semantics.
так что начиная уже с этой фразы и далее - вы не правы.
> В противном случаи возможны коллизии, приведу примеры.
Коллизии возможны только в одном случае: программист не проверяет данные,
получаемые от клиента, и такому программисту никаким костылями не поможешь.
>
> На одном хостинге, хостятся два конкурирующих электронных магазина,
> например: apple-shop.com и samsung-shop.com, в котором используется Nginx
> кеширования.
> Для каждого вирт хоста прописан proxy_cache_key $proxy_host$request_uri.
>
> Теперь делаем запрос
> GET http://apple-shop.com/ HTTP/1.1
> Host: samsung-shop.com
>
> В результате чего, ответ бекенда сохранится в кеше Nginx с ключом "
> samsung-shop.com/" но содержать внутри будет страницу apple-shop.com/.
> На все последующие запросы samsung-shop.com будет отдаваться страница с
> товарами Apple, так как внутри кеш файла с ключом "samsung-shop.com/" будет
> страница хоста apple-shop.com.
Не будет, если только в обоих случаях не указано:
proxy_pass http://samsung-shop.com;
а если именно так и указано, то получаете ровно такое поведение, какое
было сконфигурировано, что же в этом странного? Что настроили - то и
получили. Вы настраиваете HTTP сервер, что предполагает от вас хотя бы
минимальных знаний предмета и умения читать документацию.
Вы хотите пожаловаться на кольт 45-го калибра, что он позволят вам выстрелить
себе в ногу, да ещё разными способами?
> И так будут работать бекенды на любом языке программирования не только на
> РНР, те самые правильные программисты которых не расстреляли, будут в
> недоумения, что они сделали не так, вить все же сделано в точности как
> написано в официал документации Nginx :)
1. В каком месте документации написано, что надо настраивать так, как было
указано вами выше?
2. Как вообще всё вышеописанное вами относится к обсуждаемой в данной
подветке теме про http://habrahabr.ru/post/166855/ (которая вообще
не относится к кэшу и директивам proxy_cache_key/fastcgi_cache_key,
но уж так вышло, что была затронута)?
--
Валентин Бартенев
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru
|