ПРОЕКТЫ 


  АРХИВ 


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: Что значит эта оши бка ?



On Tue, Apr 21, 2009 at 10:36:49PM +0400, Sergey Shepelev wrote:

> http://мой.домен
> это не запрос. Это ничего не значащая строка. HTTP URL-ом она станет,
> если к ней добавить /
> 
> Когда вы вводите эту строку в браузер, он [дописывает ресурс /]
> создаёт запрос GET /, что равно запросу http://мой.домен/
> Обратите внимание, не /index.html, а /. Это значит, что если у вас в
> access.log есть GET /index.html, то либо люди руками вводят именно
> этот адрес, либо ссылки ведут на именно этот адрес.
> 
> nginx, видя этот запрос, обрабатывает его в соответствии с указанными 
> location.
> 
> (А так как запрос корня сайта - относительно частый, иногда самый
> частый, то есть много смысла прописать на него отдельный location)
> location = / {
>     fastcgi_pass unix:/mnt/md0/php-fcgi.sock;
>     include  /usr/local/nginx/conf/phpcgi.conf;
> }
> 
> Поскольку на location / никаких правил не написано (по крайней мере в
> том, что вы прислали), работает модуль autoindex и запрос внутри
> переписывается в /+(по очереди всё из директивы index)
> >>    index index.php index.html index.htm;

Не autoindex модуль, просто index.

> После первой подстановки (index.php) будет обрабатываться запрос
> /index.php и сработает ваш location ~ .php$
> 
> Как вы заметили, здесь не сказано почему в error.log появляются
> index.html failed (2: No such file or directory).
> В связи с тремя причинами:
> 1) вы так и не сказали какой был запрос в результате которого возникла
> ошибка. Ваш nginx сохраняет запросы в /home/logs/content_access.log
> 2) вполне возможно, из-за того что я плохо знаю внутреннее устройство
> nginx я что-то описал неверно
> 3) и, наконец, самая вероятная причина - клиенты (браузеры)
> действительно спрашивают /index.html. Но не браузер магически делает
> это, а люди руками пишут. Или ссылки ведут на такой адрес. В любом
> случае можно выяснить только с помощью access.log
> 
> Чтобы связать записи из error.log и access.log используйте время. То
> есть чтобы увидеть запросы относительно ошибки
> >> 2009/04/21 18:22:45 [error] 29090#0: *166570 open()
> >> "/home/content/index.html" failed (2: No such file or directory), client:
> нужно в access.log искать запросы произошедшие примерно в 2009/04/21 18:22:45.

Сопоставлять access_log и error_log в данном случае не нужно,
так в error_log указывается сам запрос.

> В целом, если у вас всё работает - ситуация нормальная, неважно кто
> куда пишет какие ошибки.
> Если вас очень заботит, чтобы лог не засирался этими ошибками, можно
> попробовать:
> 1. index index.php; # index.html index.htm
> 2. location = / {см.выше}  - это даже не "можно", а "нужно"
> 3. как выключить -
> http://sysoev.ru/nginx/docs/http/ngx_http_core_module.html#log_not_found
> учтите, что эта директива может не поддерживаться в вашей версии nginx.
> 
> Также стоит посмотреть в сторону директивы try_files. Это просто
> удобство, никаких проблем она не решит.
> 
> 2009/4/21  <maxhl@xxxxxxxxxxxxxx>:
> > А какой запрос делает броузер при открытии http://мой.домен
> > Наверное index.html ... Тоесть это нормальная ситуация? А можно как то
> > выключить ведение лога для этого файла?
> >
> > -----Original Message-----
> > From: owner-nginx-ru@xxxxxxxxx [mailto:owner-nginx-ru@xxxxxxxxx] On Behalf
> > Of Sergey Shepelev
> > Sent: Tuesday, April 21, 2009 6:57 PM
> > To: nginx-ru@xxxxxxxxx
> > Subject: Re: Что значит эта ошибка ?
> >
> > Запрос какой был?
> >
> > 2009/4/21  <maxhl@xxxxxxxxxxxxxx>:
> >> В error логе полно таких ошибок:
> >> 2009/04/21 18:22:45 [error] 29090#0: *166570 open()
> >> "/home/content/index.html" failed (2: No such file or directory), client:
> >> ...
> >> У меня везде прописан index.php а он все равно ищет index.html ...
> >>
> >> Конфиг вирт хоста:
> >> server {
> >>    listen 80;
> >>    listen 81;
> >>    listen 82;
> >>
> >>    server_name мой.домен *.мой домен;
> >>    access_log /home/logs/content_access.log combined;
> >>    error_log /home/logs/content_error.log info;
> >>    server_name_in_redirect off;
> >>    root /home/content;
> >>    index index.php index.html index.htm;
> >>
> >> # redirect to php<----->
> >>    location ~ .php$ {
> >>
> >>    set $path_info $fastcgi_script_name;
> >>    set $real_script_name $fastcgi_script_name;
> >>    if ($fastcgi_script_name ~ "(.+?.php)(/.+)$") {
> >>        set $real_script_name $1;
> >>        set $path_info $2;
> >>    }
> >>    fastcgi_param SCRIPT_FILENAME  /home/content$real_script_name;
> >>    fastcgi_param SCRIPT_NAME $real_script_name;
> >>    fastcgi_param PATH_INFO $path_info;
> >>    fastcgi_pass unix:/mnt/md0/php-fcgi.sock;
> >>    include  /usr/local/nginx/conf/phpcgi.conf;
> >>    }
> >>
> >>    include /usr/local/nginx/conf/404;
> >>    include /usr/local/nginx/conf/anti_lich;
> >>    include /usr/local/nginx/conf/.ht;
> >> }
> >>
> >>
> >> #phpcgi.conf
> >> fastcgi_pass_request_body off;
> >> client_body_in_file_only clean;
> >> fastcgi_param  REQUEST_BODY_FILE  $request_body_file;
> >> fastcgi_param<->CONTENT_TYPE<--><------>$content_type;
> >> fastcgi_param<->CONTENT_LENGTH<><------>$content_length;
> >> fastcgi_param   DOCUMENT_ROOT<-><------>$document_root;
> >> fastcgi_param<->DOCUMENT_URI<--><------>$document_uri;
> >> fastcgi_param<->GATEWAY_INTERFACE<----->CGI/1.1;
> >> #fastcgi_param   PATH_INFO
> >> <---><------>"http://$http_host$request_uri";;
> >> #fastcgi_param   PATH_TRANSLATED         "/home/content$document_uri";
> >> fastcgi_param<->QUERY_STRING<--><------>$query_string;
> >> fastcgi_param<->REMOTE_ADDR<---><------>$remote_addr;
> >> fastcgi_param<->REMOTE_PORT<---><------>$remote_port;
> >> fastcgi_param<->REQUEST_URI<---><------>$request_uri;
> >> fastcgi_param<->REQUEST_METHOD<><------>$request_method;
> >> fastcgi_param<->SCRIPT_NAME<---><------>$request_uri;
> >> fastcgi_param<->SERVER_ADDR<---><------>$server_addr;
> >> #fastcgi_param<>SERVER_NAME<---><------>$server_name;
> >> fastcgi_param<->SERVER_PORT<---><------>$server_port;
> >> fastcgi_param<->SERVER_PROTOCOL><------>$server_protocol;
> >> fastcgi_param<->SERVER_SOFTWARE <------>nginx/$nginx_version;
> >>
> >> fastcgi_param   REDIRECT_STATUS 200;
> >> fastcgi_index  index.php;
> >>
> >> Заранее спасибо.
> >> ____________________________
> >> С уважением Max ICQ 71006063
> >>
> >>
> >>
> >>
> >>
> >
> >
> >

-- 
Игорь Сысоев
http://sysoev.ru



 




Copyright © Lexa Software, 1996-2009.