Назад | Перейти на главную страницу

Включите Gzip для комбинированных файлов JS или CSS без расширения файла

Я пытаюсь настроить GZip на своем сервере nginx. Он работает для файлов с расширением файла.

Чтобы принять решение, какой тип файла обслуживается по сети, Nginx не анализирует содержимое файла ... Вместо этого он просто просматривает расширение файла чтобы определить его MIME-тип

Поэтому, когда у меня есть комбинированный файл css без расширения файла, он не знает, что его нужно сжать, и обслуживает его.

Есть ли способ сообщить nginx, что все, что обслуживается из указанного места, всегда должно быть сжато с помощью gzip. С расширением файла или без?

У меня это работает:

    location /files {
      types         { } 
      default_type  text/css;

      gzip  on;
      gzip_min_length  1;
      gzip_proxied     any;
      gzip_types       text/css;
      gzip_disable "MSIE [1-6]\.(?!.*SV1)";
      gzip_comp_level  6;
    }

И протестируем:

curl -v localhost/files/test1
* About to connect() to localhost port 80 (#0)
*   Trying ::1...
* Connected to localhost (::1) port 80 (#0)
> GET /files/test1 HTTP/1.1
> User-Agent: curl/7.29.0
> Host: localhost
> Accept: */*
> 
< HTTP/1.1 200 OK
< Server: nginx/1.6.3
< Date: Tue, 21 Jun 2016 07:23:17 GMT
< Content-Type: text/css
< Content-Length: 13
< Last-Modified: Tue, 21 Jun 2016 07:23:08 GMT
< Connection: keep-alive
< ETag: "5768eb5c-d"
< Accept-Ranges: bytes
< 
MY DATA HERE
* Connection #0 to host localhost left intact

Файл без расширения был отправлен как mime text / css. Или что тебе нужно? текст / html?

Теперь протестируйте gzip:

curl -H "Accept-Encoding: gzip" localhost/files/test1 | gunzip
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    33    0    33    0     0    217      0 --:--:-- --:--:-- --:--:--   218
MY DATA HERE

Вы можете указать местоположение для этих файлов и установить для них default_type ... Но почему вы делаете такую ​​странную вещь?

Это могло быть что-то вроде этого:

server {
  server_name my_server.com;
  listen 80;
  location /my_files { 
    types         { } 
    default_type  text/css;
 }   
}

Теоретически он должен отправлять все файлы в это место как mime-тип «text / css». Но я никогда этого не делал и понятия не имею, сработает ли это. Gzip также может быть включен в этом месте.

В любом случае, дополнительная информация может помочь.