ПРОЕКТЫ 


  АРХИВ 


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


  • To: nginx-ru@xxxxxxxxx
  • Subject: Re: Что значит эта ошибка ?
  • From: Sergey Shepelev <temotor@xxxxxxxxx>
  • Date: Tue, 21 Apr 2009 22:36:49 +0400
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:content-type :content-transfer-encoding; bh=ZjFqVLWS1jxDifT30lmxZ9hCFsZUabuwe21refo31P0=; b=BU4oVXnHYVACfBDo4VNtF3Hnu+rKjF1PDqK8BY5GCt/EG4xtVhjnLSH6dhbjNiXJ3W kODDr9+Xpy3rNa2MvfkhymZlB/ZbzaMkywu1uoaonAaAYamt/x+e5kJT/YWP8wTrQmmW VGQoJrqvfVivyCX1WkXyUmSStxG0nLADPUEzY=
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type:content-transfer-encoding; b=ALI0tX76Jc3JQ7aJkLy/WHHsFZVEX7GfP2XUqGdHQ+7C4D84cPEeyjsiKXtL16v4WA IslvJORl4yfjR1YRHVSot76AJ+uR2SYapQAweNmh1aTuRLsOyeuKDB3OC0mdARbYMbIx 5YMGQMdr8DPsO0cV95uH8h4Yry31sLCXoABIY=
  • In-reply-to: <3178F4451AAF4A55A429A1346DDC8DA2@maxhl>
  • References: <2d8fb9950904210856n45cefe31o4092bc93335e1a1a@xxxxxxxxxxxxxx> <3178F4451AAF4A55A429A1346DDC8DA2@maxhl>

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;

После первой подстановки (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.

В целом, если у вас всё работает - ситуация нормальная, неважно кто
куда пишет какие ошибки.
Если вас очень заботит, чтобы лог не засирался этими ошибками, можно
попробовать:
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
>>
>>
>>
>>
>>
>
>
>


 




Copyright © Lexa Software, 1996-2009.