Отдача большого контента через fast_cgi
Peter A. Shevtsov
mera на mera.com.ru
Чт Ноя 26 09:54:43 MSK 2009
server {
if ($host ~* www\.(.*)) {
set $host_without_www $1;
rewrite ^(.*)$ http://$host_without_www$1 permanent;
}
if ($host !~* www\.(.*)) {
set $host_without_www $host;
}
if ($host !~*
^(mera.com.ru|www.mera.com.ru|m3ra.ru|www.m3ra.ru|mhra.ru|www.mhra.ru|mhera.ru|www.mhera.ru|time-to-live.net.ru|www.time-to-live.net.ru|dotu.ru|www.dotu.ru)$
) {
return 444;
}
access_log /var/log/nginx/$host_without_www.access.log main;
error_log /var/log/nginx/wpmu.error.log info;
root /var/www/html/default;
limit_conn myzone 5;
listen 80;
server_name mera.com.ru www.mera.com.ru m3ra.ru www.m3ra.ru
mhra.ru www.mhra.ru mhera.ru www.mhera.ru time-to-live.net.ru
www.time-to-live.net.ru dotu.ru www.dotu.ru;
client_max_body_size 40m;
location / {
index index.php;
rewrite ^.*/files/(.*) /wp-content/blogs.php?file=$1;
if (!-e $request_filename) {
rewrite ^.+?(/wp-.*) $1 last;
rewrite ^.+?(/.*\.php)$ $1 last;
rewrite ^ /index.php last;
}
}
location = /favicon.ico {
return 204;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/var/lib/php/php-fpm.sock;
fastcgi_index index.php;
fastcgi_read_timeout 600;
fastcgi_intercept_errors on;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
}
25 ноября 2009 г. 18:54 пользователь Andrew Kopeyko <kaa at zvuki.ru> написал:
> Peter A. Shevtsov wrote:
>>
>> В конфиге следующее:
>> location / {
>> index index.php;
>> rewrite ^.*/files/(.*) /wp-content/blogs.php?file=$1;
>> if (!-e $request_filename) {
>> rewrite ^.+?(/wp-.*) $1 last;
>> rewrite ^.+?(/.*\.php)$ $1 last;
>> rewrite ^ /index.php last;
>> }
>> }
>
> Подозреваю, что это далеко не весь конфиг - в приведённом куске нет никаких
> намёков на упоминаемый вами fast-cgi.
>
> Пожалуйста, приведите полный конфиг виртуального сервера.
>
>> Скрипт /wp-content/blogs.php раздаёт файлы из директории
>> wp-content/blogs.dir/
>>
>> Для кого надо писать отдельный location, чтобы отдавать x-accel-redirect?
>
> Повторюсь - запросы на
> /files/19970604_Proses_mirivozzrencheskix_transformatsiy.pdf
> не должны уходить на upstream
> "fastcgi://unix:/var/lib/php/php-fpm.sock:",
>
>
>> 25 ноября 2009 г. 18:24 пользователь Andrew Kopeyko <kaa at zvuki.ru>
>> написал:
>>>
>>> On Wed, 25 Nov 2009, Peter A. Shevtsov wrote:
>>>
>>>> В предыдущем письме я не точно выразился. Скрипт не генерит файл, а
>>>> отдаеёт его через readfile(); Если это важно, то скрипт - blogs.php из
>>>> Wordpress MU для раздачи файлов. И он даже сам может посылать
>>>> заголовок x-accel-redirect. Но после "переключения" на
>>>> x-accel-redirect получаю ошибки:
>>>>
>>>> 2009/11/25 14:58:52 [error] 3989#0: *222 rewrite or internal
>>>> redirection cycle while processing "/wp-content/blogs.php", client:
>>>> 65.55.106.232, server: mera.com.ru, request: "GET
>>>> /files/19970604_Proses_mirivozzrencheskix_transformatsiy.pdf
>>>> HTTP/1.0", upstream: "fastcgi://unix:/var/lib/php/php-fpm.sock:",
>>>> host: "dotu.ru"
>>>
>>> Вероятно, и вас
>>> /files/19970604_Proses_mirivozzrencheskix_transformatsiy.pdf
>>> тоже проксируется на fast-cgi.
>>> А для того, чтобы работал x-accel-redirect, оно должно отдаваться
>>> локально.
>>>
>>> Вам надо описать отдельный location для отдаваемых через x-accel-redirect
>>> файлов - и наступит вам счастье.
>>>
>>>
>>> 25 ноября 2009 г. 15:15 пользователь Alexandr Kutuzov
>>> <alleteam at gmail.com> написал:
>>>>
>>>> правильно отгружать в статику и отдавать x-accel-redirect на
>>>> сгенерированный
>>>> файл.
>>>>
>>>> 25.11.2009, в 12:01, Пётр Шевцов написал(а):
>>>>
>>>>> Приветствую!
>>>>>
>>>>> Дано следующее: nginx+fast_cgi+php-fpm. Есть PHP скрипт, который
>>>>> генерирует и отдаёт контент (pdf). Если размер отдаваемого контента
>>>>> больше ~3Мб, то файлы получаются битые, то есть отдаётся 3 мегабайта и
>>>>> всё. Как настроить, чтобы можно было отдавать больше контента?
>>>>>
>>>>> Спасибо.
>>>>>
>
>
> --
> Best regards,
> Andrew A. Kopeyko <kaa at zvuki.ru>
> http://www.zvuki.ru/
>
> _______________________________________________
> nginx-ru mailing list
> nginx-ru at nginx.org
> http://nginx.org/mailman/listinfo/nginx-ru
>
--
Пётр Шевцов
Подробная информация о списке рассылки nginx-ru