Re: Пустой массив $_POST

Alexey V. Karagodov kav на karagodov.name
Вт Дек 21 15:49:36 MSK 2010


правильней смешать оба варианта, как то так: 

location / {
    error_page 404 @PHP;
    try_files /maintenance.html $uri $uri/ =404;
}

location ~* \.php$ {
    try_files /maintenance.html $uri $uri/ @PHP;
    include include/fastcgi_param;
    fastcgi_index index.php;
    fastcgi_pass_request_body off;
    client_body_in_file_only clean;
    fastcgi_pass unix:/tmp/php-fpm.sock;
}

location @PHP {
    include include/fastcgi_param;
    fastcgi_param SCRIPT_FILENAME $document_root/index.php;
    fastcgi_index index.php;
    fastcgi_pass_request_body off;
    client_body_in_file_only clean;
    fastcgi_pass unix:/tmp/php-fpm.sock;
}

и отдельный location для всяких картинок - статики короче, чтобы из-за каждой отсутствующей картинки, не дёргался пхп 

location ~* \.(jpg|gif|bmp|pdf|rar)$ {
}

On 21.12.2010, at 13:34, Maxim Dounin wrote:

> Hello!
> 
> On Tue, Dec 21, 2010 at 11:24:10AM +0200, star0x4b at gmail.com wrote:
> 
>> Здравствуйте.
>> 
>> Есть конфиг сайта, работающего на zend framework. Перенаправление
>> несуществующих страниц на index.php осуществлялось с помощью директивы
>> error_page 404, но тут появилась проблема - POST-запросы передавались от
>> нжинкса в php пустыми. GET-запросы при этом передаются нормально. Если
>> же перенаправлять с помощью реврайта - все работает. Но использовать
>> реврайты некошерно, поэтому хотелось бы понять, что не так с error_page?
> 
> При перенаправлении по error_page в обычный uri - метод запроса 
> меняется на GET.  Это сделано для того, чтобы error_page мог 
> выполнять свою основную функцию: возвращать страницы ошибок (e.g. 
> статический файл /404.html очень удивиться, если в него попытаются 
> сделать POST).
> 
> Если метод запроса менять не нужно, то надо использовать 
> перенаправление в именованный location.  I.e.
> 
>    error_page 404 = @fallback;
> 
>    location @fallback {
>        ...
>    }
> 
>> Конфиг приведен ниже.
>> 
>> server {
>>        listen      80;
>>        server_name  servername.ru;
>>        root   /usr/local/www/repos/servername.ru/public;
>>        access_log  /var/log/nginx/zfproject_main_access.log;
>>        error_log  /var/log/nginx/zfproject_error.log;
>> 
>>        index    index.php;
>> #        error_page 404 = /index.php?$args;
>>        rewrite  ^(/.*)$  /index.php last;
> 
> Если вас устраивает такой rewrite (т.е. вообще всё отправляется на 
> /index.php), то всё это вообще не нужно.  Достаточно сделать так:
> 
>    location / {
>        fastcgi_pass unix:/tmp/php-fpm.sock;
>        fastcgi_param SCRIPT_FILENAME $document_root/index.php;
>        ...
>    }
> 
> Maxim Dounin
> 
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://nginx.org/mailman/listinfo/nginx-ru


On 21.12.2010, at 13:38, star0x4b at gmail.com wrote:

> 21.12.10 11:27, Alexey V. Karagodov пишет:
> 
> Спасибо, с try_files все как надо работает.
>> http://sysoev.ru/nginx/docs/http/ngx_http_core_module.html#try_files
>> 
>> On 21.12.2010, at 12:24, star0x4b at gmail.com wrote:
>> 
>>> Здравствуйте.
>>> 
>>> Есть конфиг сайта, работающего на zend framework. Перенаправление
>>> несуществующих страниц на index.php осуществлялось с помощью директивы
>>> error_page 404, но тут появилась проблема - POST-запросы передавались от
>>> нжинкса в php пустыми. GET-запросы при этом передаются нормально. Если
>>> же перенаправлять с помощью реврайта - все работает. Но использовать
>>> реврайты некошерно, поэтому хотелось бы понять, что не так с error_page?
>>> Конфиг приведен ниже.
>>> 
>>> server {
>>>       listen      80;
>>>       server_name  servername.ru;
>>>       root   /usr/local/www/repos/servername.ru/public;
>>>       access_log  /var/log/nginx/zfproject_main_access.log;
>>>       error_log  /var/log/nginx/zfproject_error.log;
>>> 
>>>       index    index.php;
>>> #        error_page 404 = /index.php?$args;
>>>       rewrite  ^(/.*)$  /index.php last;
>>> 
>>>      location /index.php {
>>>          fastcgi_pass unix:/tmp/php-fpm.sock;
>>>          fastcgi_param SCRIPT_FILENAME   $document_root/index.php;
>>>          fastcgi_param APPLICATION_ENV    development;
>>>          fastcgi_param REQUEST_URI           $request_uri;
>>>          fastcgi_param REQUEST_METHOD  $request_method;
>>>          fastcgi_param CONTENT_TYPE        $content_type;
>>>          fastcgi_param CONTENT_LENGTH   $content_length;
>>>          include /usr/local/etc/nginx/fastcgi_params;
>>>       }
>>> }
>>> 
>>> Пример запроса, если использовать GET-метод вместо POST -
>>> /registration/register/?iagree=1&proceed=Далее
>>> 
>>> _______________________________________________
>>> nginx-ru mailing list
>>> nginx-ru at nginx.org
>>> http://nginx.org/mailman/listinfo/nginx-ru
>> 
>> _______________________________________________
>> nginx-ru mailing list
>> nginx-ru at nginx.org
>> http://nginx.org/mailman/listinfo/nginx-ru
> 
> 
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://nginx.org/mailman/listinfo/nginx-ru




Подробная информация о списке рассылки nginx-ru