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