405 Not Allowed.Продолжение темы и её окончание.

Igor Sysoev is at rambler-co.ru
Thu May 25 12:09:17 MSD 2006


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





More information about the nginx-ru mailing list