ПРОЕКТЫ 


  АРХИВ 


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: все таки как вылечить 405 ошибку :(



Anton Ladokha wrote:
> поможет:
> rewrite ^/\? /index.php\?;
> 
> (не силен я в регулярных, но по смыслу верно).
> 
> 
> ----- Original Message ----- From: "Michail Baikov" <lists@xxxxxxxxxx>
> To: <nginx-ru@xxxxxxxxx>
> Sent: Tuesday, June 20, 2006 4:18 PM
> Subject: все таки как вылечить 405 ошибку :(
> 
> 
> 
> Игорь - здравствуйте!
> 
> Переписка старая ниже.
> 
> Проблема в том, что старый софт написан так, что посылает POST запрос к
> скрипту используя URL с параметрами (www.host.com/?list)
> 
> Переделать программку нельзя, переделать урл можно, но сложно (клиент
> далеко). Можно ли каким-то образом сделать специальную обработку этой
> ситуации в конфиге nginx?
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> On Thu, 25 May 2006, Michail Baikov wrote:
> 
>> Igor Sysoev wrote:
>>> On Wed, 24 May 2006, Michail Baikov wrote:
>>>
>>>> Eugene wrote:
>>>>> Именно.
>>>>> Но опять же непонятно, почему нельзя использовать их одновременно?
>>>>>
>>>>>> Дело  в  том,  что  /index.pl?action=3  -  это не GET-запрос, это
>>>>>> URL.
>>>>>> Обычный URL, как его трактует веб-сервер - его дело. Таким образом
>>>>>>
>>>>>> POST /index.pl?action=3 ничем не отличается от
>>>>>> POST /anotherurl и от
>>>>>> POST /,da,das,/?d/as???a=&aasdsa
>>>
>>>> Если считать GET запрос как /index.php?id=1&id1=2, то да - отключение
>>>> микса типов запроса правильно.
>>>> Но если GET запрос с точки зрения сервера - это дополнительное поле в
>>>> заголовке, то исключение микса POST с GETом, является, IMHO, небольшим
>>>> недоразумением в реализации nginx. Я сейчас не помню как оформляется
>>>> запросы GET и POST из формы в  HTTP, поправьте.
>>>
>>> nginx понимает и POST, и GET с телом запроса и с query string.
>>> Проблема, насколько я понимаю, была в другом - делался POST
>>> в статический /.
>>>
>> Делался POST в динамический index.php (это же скрипт fastcgi). Хотя что
>> называется статикой и динамикой в данном контексте, я не понял
> 
> Я повторяю в третий раз пример конфигурации,
> 
>    location /  {
>        index.php;
>    }
> 
>    location ~ \.php$ {
>        fastcgi_pass  ...
>    }
> 
> для которого версии старше 0.3.40 для POSTа выдают 405.
> 
> До 0.3.40 дело происходило так:
> 
> 1) POST / в первом location превращается в внутренний редирект
>   POST /index.php, потому что на диске есть файл /index.php (если
>   файла не будет, то будет 404). Файл с точки зрения nginx - статический.
>   В версиях после 0.3.40 nginx выдаёт 405, потому что статика не умеет
>   обрабатывать POST.
> 
> 2) В версиях после 0.3.40 внутренний редирект POST /index.php
>   обрабатывается во втором location и уходит на fastcgi_pass ?
> 
> Данный конфиг не будет работать во всех версиях, если статика и php
> будут разнесены, например, на разные машины - index.php в статике
> не будет. Или его придётся дублировать пустыми файлами.
> 
> 
> 
я сделал:

        location /service/ {
            rewrite  /service/  /service/index.php  last;
        }

#        location / {
#            root                /var/www/xxxxxxxx.ru/htdocs;
#            index               index.php index.html index.htm;
#        }




-- 
Mike Baikov <mike at baikov dot com>
GameDot Labs Developer





 




Copyright © Lexa Software, 1996-2009.