Mime-types: расширенная поддержка

Есть в планах расширенная поддержка файла mime-types, как это делается в пакете mailcap? который достаточно редко обновляется.

Задача файла mime.types не в том, чтобы вобрать в себя все известные типы, а в том, чтобы содержать те 5-7 типов, которые чаще всего нужны для типичного ресурса.

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

Хотелось бы, чтобы хватало указания дефолтного файла из дистрибутива пакета. Как мне кажется, по умолчанию не всех mime-types хватает, поэтому, например в Roundcube, рекомендуют его изменить на вариант из mailcap.

Если каких-то конкретных не хватает, то можно рассмотреть их добавление туда. Но решение будет приниматься исходя из распространнености формата в вебе.

Половину mime-типов в mailcap вы никогда не встретите в реальности, а просто так способствовать глобальному потеплению - тоже не хотелось бы.

В каком формате можно предлагать изменения?

В виде pull-реквеста на GitHub. Или же просто написать тут каких популярных форматов не хватает.

Пока выкладываю изменения для существующих mime-types. Для обновления использовались следующие источники:

Часть расширений перенесены в другие mime-types? другая часть переименована. В некоторая типы добавлены дополнительные расширения, которые указаны в IANA.
При необходимость, потом могу попробовать разбить на отдельные коммиты.

diff --git a/conf/mime.types b/conf/mime.types
index 1c00d701a..bf349d60a 100644
--- a/conf/mime.types
+++ b/conf/mime.types
@@ -14,6 +14,7 @@ types {
     text/vnd.sun.j2me.app-descriptor                 jad;
     text/vnd.wap.wml                                 wml;
     text/x-component                                 htc;
+    text/x-tcl                                       tk;

     image/avif                                       avif;
     image/png                                        png;
@@ -23,7 +24,10 @@ types {
     image/webp                                       webp;
     image/x-icon                                     ico;
     image/x-jng                                      jng;
-    image/x-ms-bmp                                   bmp;
+    image/bmp                                        bmp dib;
+
+    model/prc                                        prc;
+    model/vnd.gdl                                    gdl gsm win dor lmp rsm msm ism;

     font/woff                                        woff;
     font/woff2                                       woff2;
@@ -32,15 +36,19 @@ types {
     application/json                                 json;
     application/mac-binhex40                         hqx;
     application/msword                               doc;
+    application/pem-certificate-chain                pem;
     application/pdf                                  pdf;
-    application/postscript                           ps eps ai;
+    application/postscript                           ps ai eps epsi epsf eps2 eps3;
     application/rtf                                  rtf;
-    application/vnd.apple.mpegurl                    m3u8;
+    application/vnd.adobe.flash.movie                swf;
+    application/vnd.apple.mpegurl                    m3u m3u8;
+    application/vnd.debian.binary-package            deb udeb;
     application/vnd.google-earth.kml+xml             kml;
     application/vnd.google-earth.kmz                 kmz;
-    application/vnd.ms-excel                         xls;
+    application/vnd.microsoft.portable-executable    exe dll;
+    application/vnd.ms-excel                         xls xlm xla xlc xlt xlw;
     application/vnd.ms-fontobject                    eot;
-    application/vnd.ms-powerpoint                    ppt;
+    application/vnd.ms-powerpoint                    ppt pps;
     application/vnd.oasis.opendocument.graphics      odg;
     application/vnd.oasis.opendocument.presentation  odp;
     application/vnd.oasis.opendocument.spreadsheet   ods;
@@ -51,49 +59,49 @@ types {
                                                      xlsx;
     application/vnd.openxmlformats-officedocument.wordprocessingml.document
                                                      docx;
-    application/vnd.wap.wmlc                         wmlc;
+    application/vnd.palm                             pdb pqa oprc;
+    application/vnd.rar                              rar;
+    application/vnd.wap.wmlc                         wmlc wbxml;
     application/wasm                                 wasm;
     application/x-7z-compressed                      7z;
+    application/x-apple-diskimage                    dmg;
+    application/x-iso9660-image                      iso;
     application/x-cocoa                              cco;
     application/x-java-archive-diff                  jardiff;
     application/x-java-jnlp-file                     jnlp;
     application/x-makeself                           run;
+    application/x-msdos-program                      com bat;
+    application/x-msi                                msi;
     application/x-perl                               pl pm;
-    application/x-pilot                              prc pdb;
-    application/x-rar-compressed                     rar;
     application/x-redhat-package-manager             rpm;
     application/x-sea                                sea;
-    application/x-shockwave-flash                    swf;
-    application/x-stuffit                            sit;
-    application/x-tcl                                tcl tk;
-    application/x-x509-ca-cert                       der pem crt;
+    application/x-stuffit                            sit sitx;
+    application/x-tcl                                tcl;
+    application/x-x509-ca-cert                       der crt;
     application/x-xpinstall                          xpi;
     application/xhtml+xml                            xhtml;
     application/xspf+xml                             xspf;
     application/zip                                  zip;

-    application/octet-stream                         bin exe dll;
-    application/octet-stream                         deb;
-    application/octet-stream                         dmg;
-    application/octet-stream                         iso img;
-    application/octet-stream                         msi msp msm;
+    application/octet-stream                         bin deploy msu msp;
+    application/octet-stream                         img;

-    audio/midi                                       mid midi kar;
-    audio/mpeg                                       mp3;
-    audio/ogg                                        ogg;
-    audio/x-m4a                                      m4a;
-    audio/x-realaudio                                ra;
+    audio/midi                                       midi kar;
+    audio/mpeg                                       mp1 mp2 mp3;
+    audio/ogg                                        oga ogg opus spx;
+    audio/sp-midi                                    mid;
+    audio/mp4                                        m4a;
+    audio/x-pn-realaudio                             ra rm ram;

     video/3gpp                                       3gpp 3gp;
     video/mp2t                                       ts;
-    video/mp4                                        mp4;
-    video/mpeg                                       mpeg mpg;
-    video/quicktime                                  mov;
+    video/mp4                                        mp4 mpg4 m4v;
+    video/mpeg                                       mpeg mpg mpe m1v m2v;
+    video/quicktime                                  qt mov;
     video/webm                                       webm;
     video/x-flv                                      flv;
-    video/x-m4v                                      m4v;
     video/x-mng                                      mng;
-    video/x-ms-asf                                   asx asf;
+    video/x-ms-asf                                   asf;
     video/x-ms-wmv                                   wmv;
     video/x-msvideo                                  avi;
 }

С изменениями для существующих типов стоит быть особенно аккуратным и рациональным, т.к. такие изменения ломают обратную совместимость. На mime-типы могут быть завязаны различные механизмы и настройки, начиная от компрессии и заканчивая кэшированием. У кого-то что-то может незаметно сломаться при обновлении.

В случае Angie проблема будет ещё острее, т.к. многие переходят с nginx, копируя существующую конфигурацию, и могут не учесть разницу в файле mime-типов по умолчанию.

Я рекомендую сперва предложить указанные изменения в nginx, отправив в виде патча в список рассылки: nginx-devel Info Page.

Если их примут, то мы их подтянем в Angie при очередном мердже. Так будет гораздо лучше.

Пробовал отправить несколько коммитов для начала - Re: Mime-types: обновление , пока тишина.

Ссылка на pastebin в том вашем сообщении у меня не открывается, 404.

Я выставил срок хранение на неделю, думал должно было хватить времени.
Новая ссылка - 2023-11-25 ... * conf/mime.types: MIME: update application/ - Pastebin.com
Там только 4 изменения.

В среднем в nginx до ревью в списках рассылки добираются около месяца, поэтому одной недели точно мало. Лучше всего прислать в виде патча, непосредственно прикрепленного к сообщению.

Ясно, обновил патч и отправил им патч, прикреплённый к сообщению - Re: Mime-types: обновление

Прошло несколько месяцев, реакции в upstream нету :frowning:
Может у вас будет возможность рассмотреть изменения?

Я видел в nginx-devel@ рассылке вчера патч на mime-типы. Давайте понаблюдаем некоторое время, может в виду недавних событий с уходом Максима подход изменится и на него отреагируют. Если нет, то тогда уже будем принимать меры.

Да, это я ещё раз попытался отправить патчи. До этого пытался сделать в другой ветке - тишина в ответ.

Есть маленький прогресс, но в Free Nginx :slight_smile:
https://freenginx.org/hg/nginx/rev/28fbf78841dc
https://freenginx.org/hg/nginx/rev/e8b200816108
https://freenginx.org/hg/nginx/rev/9a0849fd4b46

Из более 10-ти вариантов, только 3 изменения удалось протолкнуть.

А в Nginx вообще тишина.

1 Like