ПРОЕКТЫ 


  АРХИВ 


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: Re: =?koi8-r?Q?Re[2]: 405 Not Allowed. Продо лжение темы и её окон чание.?=



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 в статике
не будет. Или его придётся дублировать пустыми файлами.


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



 




Copyright © Lexa Software, 1996-2009.