Re: Помогите разобраться откуда берутся левые get-запросы

Gena Makhomed gmm на csdoc.com
Чт Ноя 24 18:46:50 UTC 2011


On 24.11.2011 6:58, valet wrote:

> Выделенный сервер на Debian, на котором
> много сайтов (bind9, nginx+php-fpm).
> Столкнулся с очень странной проблемой.
> В логах nginx отдельных хостов с завидной
> регулярностью замечаю get-запросы
> страниц другого сайта.
> То есть например в логе первого сайта
> site1.ru.access.log Googlebot/2.1 и другие боты
> запрашивают страницы второго сайта
> ...
> ..."GET /stranica-site2-1.html HTTP/1.1"...
> ...
> ..."GET /stranica-site2-n.html HTTP/1.1"...
> ...
> На самом деле это урл-ы сайта site2.ru и
> ссылок естественно таких на site1.ru нигде
> нет, поэтому то, что они запрашиваются
> тем боле поисковыми ботами, может
> означать только одно - ошибка где-то в
> конфигах. Я в первую очередь подумал,
> что дело в кешировании fast-cgi-запросов на
> nginx и убрал его - но это на мое удивление
> не решило проблему.

да, причина этих проблем в не совсем верно
настроенном кешировании fast-cgi-запросов.

> Я не могу понять почему такое может
> происходить и куда копать дальше.

раньше Ваш сервер отдавал страницы site2 при запросе к site1,
поисковые машины уже проиндексировали эти страницы,
и потом начали ходить на сайт проверять обновления.

чтобы они прекратили это делать - для несуществующих
страниц необходимо возвращать код ошибки 404.

> #            fastcgi_cache_key
> "$server_addr:$server_port$request_uri|$cookie_phpsessid"; #
> Формируем уникальный ключ; в данном
> случае различаем пользователей с
> помощью $cookie_phpsessid

ключ совсем не уникальный для не-залогиненных пользователей.
потому что $cookie_phpsessid будет пустой строкой,
а $server_addr:$server_port для всех/части сайтов
на этом сервере будут одинаковые, это будет 11.22.33.44:80

некоторая часть $request_uri у разных сайтов может совпадать,
например, если $request_uri == '/', что собственно и произошло.

в официальной документации к nginx
http://nginx.org/ru/docs/http/ngx_http_fastcgi_module.html#fastcgi_cache_key
приведен не очень удачный пример, там нет переменной $host

более понятный пример на сайте вики:
http://wiki.nginx.org/HttpFcgiModule

fastcgi_cache_key "$scheme$request_method$host$request_uri";

-- 
Best regards,
  Gena



Подробная информация о списке рассылки nginx-ru