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 [email protected] http://mailman.nginx.org/mailman/listinfo/nginx-ru
