У меня включен gzip на nginx 1.2.8, но по какой-то причине он ничего не gzip.
Информация об установке Nginx:
nginx version: nginx/1.2.8
built by gcc 4.7.2 (Ubuntu/Linaro 4.7.2-2ubuntu1)
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx-1.2.8 --with-http_ssl_module --with-http_realip_module --with-http_gzip_static_module --with-pcre --conf-path=/etc/nginx/nginx.conf --add-module=../headers-more-nginx-module-0.19rc1
Конфиг:
user www-user;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
client_max_body_size 10M;
sendfile on;
keepalive_timeout 65;
more_clear_headers "Server";
gzip on;
gzip_types text/plain text/css application/json application/javascript application/x-javascript text/javascript text/xml application/xml application/rss+xml application/atom+xml application/rdf+xml;
server {
server_name test.com;
root /www;
index index.php index.html index.htm;
listen 80 default_server;
rewrite ^/(.*)/$ /$1 permanent; #remove trailing slash
#charset koi8-r;
#access_log logs/host.access.log main;
include general/*.conf;
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ \.php$ {
fastcgi_intercept_errors on;
fastcgi_pass unix:/run/php/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
}
Я пытаюсь отправить простой статический файл css. В моей конфигурации nginx text/css
входит в gzip_types
.
Когда я пытаюсь получить файл с помощью Firefox, fiddler показывает, что полученное содержимое не сжато:
Заголовки запроса:
GET http://test.com/test.css HTTP/1.1
Host: nextdreamtest2.com
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; rv:20.0) Gecko/20100101 Firefox/20.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-gb,en;q=0.5
Accept-Encoding: gzip, deflate
Cookie: __utma=237624223.1052931239.1362029000.1365467381.1365469205.16; __utmz=237624223.1362029000.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none); __utmc=237624223; __utmb=237624223
Proxy-Authorization: Basic cHJveHk6RTRRWlNlY0JLU3o0OFh4cWpLNkg=
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Заголовки ответа:
HTTP/1.1 200 OK
Date: Tue, 09 Apr 2013 01:35:07 GMT
Content-Type: text/css
Last-Modified: Thu, 31 May 2012 08:50:00 GMT
Connection: keep-alive
Content-Length: 1688
Обратите внимание, что нет Content-Encoding: gzip
заголовок, даже если gzip включен на сервере, а тип содержимого настроен на сжатие с помощью gzip.
После дополнительного расследования я еще больше сбит с толку. Я попробовал FireFox 20.0 на машине, на которой работает nginx (Ubuntu 12.10), и файлы были правильно сжаты с помощью gzip:
Connection keep-alive
Content-Encoding gzip <------------------------------
Content-Type text/html
Date Tue, 09 Apr 2013 04:23:08 GMT
Set-Cookie 200ceb26807d6bf99fd6f4f0d1ca54d4=7hjir1h44g3dq8hlsihdsrn9v5; path=/; HttpOnly
Transfer-Encoding chunked <---------------------
Однако, если я попробую IE10, FireFox 20 и Chrome 26, а также Fiddler для проверки заголовков на моем компьютере с Windows 8 для доступа к серверу, ответ никогда не будет сжат!
Connection keep-alive
Content-Length 2192 <------------------
Content-Type text/html
Date Tue, 09 Apr 2013 04:27:16 GMT
Это невероятно странно, поскольку я не вижу в моем nginx.conf ничего, что могло бы дискриминировать машины с Windows 8.
Что может быть причиной этого?
Увидев, что FireFox 20 на Ubuntu может получать gzip-контент, в то время как моя машина с Windows 8 не может, у меня возникли подозрения.
На моем компьютере с Windows 8 он пробовал следующее: IE10, FireFox 20, Chrome 26, fiddler и curl. Когда из них выяснилось, что они получили не-сжатый контент, я сразу заподозрил свой пакет интернет-безопасности.
После удаления BitDefender для обеспечения безопасности Windows 8 (у него тоже была не лучшая производительность), теперь я вижу, что мой браузер и клиенты на моем компьютере с Windows 8 получают сжатый контент.
BitDefender, вероятно, разархивировал мои пакеты и проанализировал их на наличие вирусов и фишинговых материалов, прежде чем они попадут на кого-либо из клиентов.
Тем не менее, потратив на это почти день, я не буду устанавливать его снова и буду искать другой продукт.
Попробуйте изменить тип по умолчанию на text/html
- тип по умолчанию application/octet-stream
не сжимается.