Странное поведением с включённым gzip
soviet
nginx-forum на nginx.us
Вт Мар 1 12:48:07 MSK 2011
Здравствуйте,
У меня довольно странная проблема, при
включённой директиве gzip (on) страница
спонтанно теряет некоторые объекты
(чаще всего картинки, но иногда архивы
css и javascipt). Ответ на запрос объекта
может вовсе не прийти или прийти но не
целым. Причём закономерность выявить
не могу, те же самые картинки иногда
появляются иногда нет.
Все объекты читаются с диска хотя
изначально они создаются с помощью php,
но только в случае их отсутствия.
Читал про конфликты между бакендом и
nginx, что сжатие должно присутствовать
только на одном из двух, либо nginx или
php-fpm (в моём случае). На php-fpm сжатие
отсутствует, к тому-же повторюсь php
используется только один раз, далее по
идеи работает только nginx.
Я не уверен если виновато сжатие, так
как оно не распространяется на архивы
картинок, но эмпирически заметил что
проблема пропадает при его отключение
(gzip off;).
Возможно проблема даже в чём то другом.
Подскажите, что может вызывать такое
поведение.
Версия nginx 0.8.54
Далее привожу конфигурацию. nginx
===/nginx/conf/vhosts.conf===
user daemon;
worker_processes 1;
error_log logs/error.log debug;
pid logs/nginx.pid;
events {
worker_connections 1024;
use epoll;
}
http {
include mime.types;
default_type application/octet-stream;
include fastcgi_params;
log_format main '$remote_addr - $remote_user [$time_local]
"$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"
"$upstream_status"';
access_log logs/access.log main;
client_header_timeout 3m;
client_body_timeout 3m;
send_timeout 3m;
client_header_buffer_size 1k;
large_client_header_buffers 4 4k;
output_buffers 1 32k;
postpone_output 1460;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_requests 1024;
keepalive_timeout 75 75;
gzip on;
gzip_min_length 1100;
gzip_disable "msie6";
gzip_buffers 16 8k;
gzip_types text/plain application/x-javascript text/css
text/javascript;
gzip_vary on;
gzip_proxied any;
fastcgi_read_timeout 3m;
fastcgi_send_timeout 3m;
include vhosts.conf;
}
===vhosts.conf===
#
# includes servers configuration from there source code dirs
#
include /home/www/public_html/pub_mixgrill/mynginx.conf;
===/home/www/public_html/pub_mixgrill/mynginx.conf===
#
# nginx config file for mixgrill.gr
#
server {
listen 80;
server_name ~^(test\.)?(?mixgrill.gr)$;
root /home/www/public_html/pub_mixgrill;
error_page 404 403 =200 empty_gif; #/images/icon.png;
location =/ {
try_files /html/index.html @build;
}
location =/kg147el_arxiki.html { rewrite ^ / permanent; }
location =/index_el.html { rewrite ^ / permanent; }
location =/kg147en_arxiki.html { rewrite ^ /index_en.html permanent;
}
location =/administration.php { rewrite ^
http://backup.$domain/administration.php permanent; }
location / {
error_page 404 = /error.php;
}
location ~* \.html$ {
try_files /html$uri @build;
}
location ^~ /images/ {
expires 30d;
access_log off;
}
location ^~ /uploaded/ {
expires 30d;
}
location ~* \.jpg$ {
try_files /imgs$uri $uri @images;
expires 30d;
access_log off;
}
location ~* ^/(js/([^\-/]*)\-(el|en)\.js)$ {
try_files $uri /build.php?fullname=$1&filename=$2_js.php&gl=$3;
expires 30d;
access_log off;
}
location = /style.css {
if ($http_user_agent ~ MSIE) {
rewrite ^ /css/style-ie.css last;
}
if ($http_user_agent !~ MSIE) {
rewrite ^ /css/style-gc.css last;
}
}
location ~* ^/(css/([^\-/]*)\-(ie|gc)\.css)$ {
try_files $uri
/build.php?fullname=$1&filename=style.php&browser=$3;
expires 30d;
access_log off;
}
location @images{
rewrite
"^(/imgs)?(/img([0-9]+)_([a-f0-9]{32})_([0-9!\^ec]+)_([0-9!\^ec]+)\.jpg)$"
/image.php?fullname=imgs$2&id=$3&md_5=$4&width=$5&height=$6 last;
rewrite
"^(/imgs)?(/img([0-9]+)_([a-f0-9]{32})_([0-9!\^ec]+)\.jpg)$"
/image.php?fullname=imgs$2&id=$3&md_5=$4&width=$5 last;
rewrite "^(/imgs)?(/img([0-9]+)_([a-f0-9]{32})\.jpg)$"
/image.php?fullname=imgs$2&id=$3&md_5=$4 last;
rewrite
"^(/imgs)?(/imgm([vh])([cl])([0-9!\^ec]+)x([0-9!\^ec]+)_([0-9_]+)\.jpg)$"
/image_montage.php?fullname=imgs$2&tile=$3&gravity=$4&width=$5&height=$6&ids=$7
last;
rewrite "^(/imgs)?(/imgc([0-9]+)\.jpg)$" /imgage_confirm.php?id=$3
last;
}
location @build {
rewrite "^/(index\.html)?$"
/build.php?fullname=html/index.html&filename=index.php last;
rewrite "^(/index_en\.html)$"
/build.php?fullname=html$1&filename=index.php&gl=en last;
rewrite "^(/(kg|xr)([0-9]+)(el|en)([0-9]+)(.*)\.html)$"
/build.php?fullname=html$1&filename=index.php&gl=$4&$2_id=$3&limit1=$5&rest=$6
last;
rewrite "^(/(ar|kg|xr)([0-9]+)(el|en)(.*)\.html)$"
/build.php?fullname=html$1&filename=index.php&gl=$4&$2_id=$3&rest=$5
last;
rewrite "^(/kw0(el|en)([0-9]+)_(.*)\.html)$"
/build.php?fullname=html$1&filename=index.php&gl=$2&keyword=$4&limit1=$3
last;
rewrite "^(/kw0(el|en)_(.*)\.html)$"
/build.php?fullname=html$1&filename=index.php&gl=$2&keyword=$3 last;
rewrite
"^/reserve_(confirm|cancel)_(el|en)_([0-9]+)_([a-f0-9]{32})\.html$"
/index.php?reserve=$1&gl=$2&reserve_id=$3&md5=$4 last;
error_page 404 =200 /;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
if (!-f $request_filename) {
rewrite ^ /error.php;
}
# error_page 404 = /error.php;
# fastcgi_pass unix:/tmp/php.socket;
}
}
Posted at Nginx Forum: http://forum.nginx.org/read.php?21,179396,179396#msg-179396
Подробная информация о списке рассылки nginx-ru