Прилагаемый патч, превращает POST в GET для внтутреннего редиректа и,
кроме того, позволяет вместо
Патч применил, теперь все работает.
if ($request_method != "POST") {
писать
limit_except POST {
deny all;
}
Но deny вернет 403 клиенту, а 405 здесь будет более правильно, если не
память мне не изменяет, то Апач так и делает в аналогичной директиве.
Можно так:
limit_except POST {
deny all;
}
error_page 403 =405 /error_page.html;
Все равно не совсем корректно, тогда невозможно будет правильный статус 403
послать. К тому же будет несколько лишних дисковых syscall на
обработку /error_page.html. При незагруженном процессоре и перегруженном
диске в какой-то момент это может стать критичным.
Если этот error_page стоит только внтутри location, уходящего на fastcgi,
то там других 403 появится не откуда.
А сисколов можно избежать так:
error_page 403 = /405;
location = /405 {
return 405;
}
limit_except работает немного быстрее, чем
if ($request_method != "POST"), но разница не велика.
Игорь Сысоев
http://sysoev.ru