ПРОЕКТЫ 


  АРХИВ 


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: Это баг или фича? и как э то можно победить без ис пользовани if ?


  • To: nginx-ru@xxxxxxxxx
  • Subject: Re: Это баг или фича? и как э то можно победить без ис пользовани if ?
  • From: Дмитрий Андреев <itskemko@xxxxxxxxx>
  • Date: Thu, 24 Dec 2009 23:24:38 +0300
  • 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=evBSckwr122QH0JT/M6KPfabeQvMezJwaFL8pIuCcpk=; b=A4rjcIyMVgmXIixL/meSkh23Sm49RlqNV5Blp4vZI2bLBReLJhQWfMTfgIcyOE/p+e P+H/XcExWfkEVueqloZKwC0DnPf7IkluVp3uE/rOEwAoOQ9EKsgXDdLxMvt17Mnu6QZj oB8B75uKSVTxKEuR39TEJrUbZQGfy34RHorPw=
  • 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=NQWrUKv9Db9Z27ZwWJ1Wg7opeclugSAAUiLFHoBu/K97FGlBGaa91kTq1vb2uVNqaF Pv6rx6a8nLAyqmLJnim9T4A5Nsxdlou3Vzqe2L1hknt6WiLoU5UlBi9vNbArYyXWWyJs PnkTNkymQZ3X9Z7pRAxsnw8M7JVaDE4AL9oi4=
  • In-reply-to: <677E2DBA0D714D3593C9829BA85F5A6A@WINB93PPIIQFD8>
  • References: <696A5584F2F84E0A90D12C37BFED8113@WINB93PPIIQFD8> <677E2DBA0D714D3593C9829BA85F5A6A@WINB93PPIIQFD8>

Мне крайне лень ставить apache у себя для того чтобы проверить
изложенное ниже и утверждать с 100% уверенностью, а не 85%, так что в
крайнем случае, если ляпнул глупость, попрошу остальных участников
рассылки меня поправить.


Вообще-то RFC сейчас у вас как раз-таки Апач нарушает, а не nginx. Ну
или, что маловероятно, сам php-скрипт, но как-то изберательно:
коверкает request_uri при запросах от апача, а от nginx'а оставляет
нетронутыми. Причем судя по
http://example.com.customers.tigertech.net/phpinfo.php и
https://cgi.ccs.neu.edu/home/cgiadmin/examples/phpinfo.php (первая
страница выдачи гугла по запросу "apache phpinfo example"),
изначально, впрочем кто бы сомневался, его поведение ничуть не
отличается от поведения nginx'а в этом вопросе. Простой вопрос на
логику: если в RFC четко прописано "5.1 Request-Line

The Request-Line begins with a method token, followed by the
Request-URI and the protocol version, and ending with CRLF. The
elements are separated by SP characters. No CR or LF is allowed except
in the final CRLF sequence.

        Request-Line   = Method SP Request-URI SP HTTP-Version CRLF",
что по-вашему делать браузеру, если вы обращаетесь на
http://domain.tdl/, поле Request-URI в запросе как бы никто вдруг
необязательным не сделал. Потому / в начале есть всегда. Ну и
совершенно не вижу смысла серверу брать и менять на свое усмотрение.


24 декабря 2009 г. 21:58 пользователь <maxhl@xxxxxxxxxxxxxx> написал:
>
> Вечер добрый. Спрашиваю еще раз потому чо в первый раз сообщения видимо
> недошли.
> Есть набор правил .htaccess:
> ____________________________________________________________________________
> RewriteCond %{QUERY_STRING} (.*)
> RewriteCond %{REQUEST_FILENAME} !-f
> RewriteCond %{REQUEST_FILENAME} !-d
> RewriteRule ^(.*)$ index.php?permalink=$1&query_str=%1 [L,QSA]
>
> #feed
> RewriteRule ^feed/rss/$ _cache/rss_main.xml [L,QSA]
>
> #sitemap
> RewriteRule ^sitemap/$ index.php?page=sitemap [L,QSA]
> RewriteRule ^sitemap/([0-9]+)/$ index.php?page=sitemap&spage=$1 [L,QSA]
>
> #contact form
> RewriteRule ^contact/$ index.php?page=contact_form [L,QSA]
> ____________________________________________________________________________
> Примеры из руководства неработают.
> Сделал так:
> server {
>    listen 80;
>    server_name test.info;
>    access_log /home/logs/t_access.log combined;
>    error_log /home/logs/t_error.log debug;
>    server_name_in_redirect off;
>    root /home/test;
>    index index.php index.pl index.cgi index.html index.htm;
>
>    location / {
>        try_files      $uri  $uri/  @nedrupal;
>    }
>
>    location ~ \.php$ {
>        try_files      $uri  @nedrupal;
>        fastcgi_param SCRIPT_FILENAME  $document_root$fastcgi_script_name;
>        fastcgi_param SCRIPT_NAME $fastcgi_script_name;
>        fastcgi_param PATH_INFO $fastcgi_script_name;
>        fastcgi_pass unix:/mnt/md0/php-fcgi.sock;
>        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   QUERY_STRING    $args;
>        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   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;
>    }
>
>    location @nedrupal {
>        fastcgi_param SCRIPT_FILENAME  /home/person51/index.php;
>        fastcgi_param SCRIPT_NAME /index.php;
>        fastcgi_param PATH_INFO /index.php;
>        fastcgi_pass unix:/mnt/md0/php-fcgi.sock;
>        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   QUERY_STRING    permalink=$uri&query_str=$args;
>        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   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;
>    }
>
> В результате добился :
>
> $_SERVER["QUERY_STRING"]=permalink=/video-1/Smotret-Kino-Besplatno-7/&query_
> str=
> $_SERVER["REQUEST_URI"]=/video-1/Smotret-Kino-Besplatno-7/
> $_SERVER["SCRIPT_NAME"]=/index.php
>
> Для сравнения в апаче :
>
> $_SERVER["QUERY_STRING"]=permalink=video-1/Smotret-Kino-Besplatno-7/&query_s
> tr=
> $_SERVER["REQUEST_URI"]=/video-1/Smotret-Kino-Besplatno-7/
> $_SERVER["SCRIPT_NAME"]=/index.php
>
> Почему в nginx $uri содержит самый первый символ слеш а в апаче нет? Для
> скриптов скомпиленных ioncube это оказалось смертельно ...
> Как сделать так чтоб его небыло ?
>
>
> ____________________________
> С уважением Max ICQ 71006063
>
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru@xxxxxxxxx
> http://nginx.org/mailman/listinfo/nginx-ru
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.