proxy_ignore_client_abort + internal location
Dmytro Sychevsky
dmytrosychevsky на gmail.com
Пн Янв 25 12:44:59 MSK 2010
Есть nginx который должен забирать с бэкэндов видео отдавать
пользователю и параллельно ложить это видео в локальный кэш - все это
реализовано на основе proxy_store (что бы можно было использовать flv
и mp4 модули) - все настроено и просто прекрастно работает и вот
захотелось бы ко всему этому счастью прикрутить X-Accel-Redirect -
прикрутил и вылезла одна неприятная вещь - если location помечен как
internal то proxy_ignore_client_abort совсем неработает - те тогда
когда отваливается медленный клиент файл перестает тянуться из бэкенда
- если internal убрать то все работает как часы - это баг или фича ?
пример конфига
server {
..skiped..
proxy_buffering on;
proxy_ignore_client_abort on;
proxy_intercept_errors on;
location /video {
root /path/toroot
index index.html index.htm index.php;
if (!-e $request_filename) {
rewrite ^/video(.*)$ /index.php?$1 last;
}
}
location ~ \.php$ {
fastcgi_pass fcgihost.com;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME
path/to/script/$fastcgi_script_name;
include fastcgi_params;
}
location ~^\/vc(.+)\.m4v$ {
# internal;
try_files $uri @hdfs_fetch;
root /path/to/cache;
mp4;
limit_rate_after 1M;
limit_rate 48k;
location ~^\/vc(.+)\/1\.m4v$ {
# internal;
mp4;
try_files $uri @hdfs_fetch;
limit_rate_after 4M;
limit_rate 350k;
}
location ~^\/vc(.+)\/2\.m4v$ {
# internal;
mp4;
try_files $uri @hdfs_fetch;
limit_rate_after 2M;
limit_rate 96k;
}
}
location @hdfs_fetch {
internal;
proxy_pass
http://hadoop_HDFS$uri;
proxy_store on;
proxy_store_access user:rw
group:rw all:r;
proxy_temp_path /path/to/cache;
root /path/to/cache;;
}
}
nginx version: nginx/0.8.32
configure arguments: --prefix=/usr/local/etc/nginx --with-cc-opt='-I
/usr/local/include' --with-ld-opt='-L /usr/local/lib'
--conf-path=/usr/local/etc/nginx/nginx.conf
--sbin-path=/usr/local/sbin/nginx --pid-path=/var/run/nginx.pid
--error-log-path=/var/log/nginx-error.log --user=www --group=www
--http-client-body-temp-path=/var/tmp/nginx/client_body_temp
--http-proxy-temp-path=/var/tmp/nginx/proxy_temp
--http-fastcgi-temp-path=/var/tmp/nginx/fastcgi_temp
--http-log-path=/var/log/nginx-access.log --with-http_flv_module
--with-http_gzip_static_module
--add-module=/usr/ports/www/nginx/work/nginx_mod_h264_streaming-2.2.7
--with-http_realip_module --with-http_stub_status_module --with-pcre
----------------------------------------------------------------------
Dmytro Sychevsky
Подробная информация о списке рассылки nginx-ru