Project

General

Profile

[Solved] probem with http to https redirect (connection reset ...)

Added by danmcb over 1 year ago

Hi,

I have a lighty installation running on debian, everything is at latest version AFAIK. I try to setup http to https redirection as per the docs, but when I access any http site from Firefox I get "The connection was reset. The connection to the server was reset while the page was loading."

Full details:

Operating System: Debian GNU/Linux 11 (bullseye) Kernel: Linux 5.10.0-16-amd64
lighttpd/1.4.59 (ssl) - a light and fast webserver

lighttpd.conf :

server.modules = (
        "mod_indexfile",
        "mod_access",
        "mod_alias",
        "mod_accesslog",
        "mod_ssi",
        "mod_deflate",
        "mod_fastcgi",
        "mod_cgi",
        "mod_rewrite",
        "mod_redirect" 
)

server.document-root        = "/var/www" 
server.upload-dirs          = ( "/var/cache/lighttpd/uploads" )
server.errorlog             = "/var/log/lighttpd/error.log" 
server.pid-file             = "/run/lighttpd.pid" 
server.username             = "www-data" 
server.groupname            = "www-data" 
server.port                 = 80
dir-listing.encoding        = "utf-8" 
server.dir-listing          = "disable" 

#accesslog.filename = "/var/log/lighttpd/test-access.log" 

fastcgi.server = ( ".php" => ((
                     "bin-path" => "/usr/bin/php-cgi",
                     "socket" => "/tmp/php.socket" 
                 )))

# features
#https://redmine.lighttpd.net/projects/lighttpd/wiki/Server_feature-flagsDetails
server.feature-flags       += ("server.h2proto" => "enable")
server.feature-flags       += ("server.h2c"     => "enable")
server.feature-flags       += ("server.graceful-shutdown-timeout" => 5)
#server.feature-flags       += ("server.graceful-restart-bg" => "enable")

# strict parsing and normalization of URL for consistency and security
# https://redmine.lighttpd.net/projects/lighttpd/wiki/Server_http-parseoptsDetails
# (might need to explicitly set "url-path-2f-decode" = "disable" 
#  if a specific application is encoding URLs inside url-path)
server.http-parseopts = (
  "header-strict"           => "enable",# default
  "host-strict"             => "enable",# default
  "host-normalize"          => "enable",# default
  "url-normalize-unreserved"=> "enable",# recommended highly
  "url-normalize-required"  => "enable",# recommended
  "url-ctrls-reject"        => "enable",# recommended
  "url-path-2f-decode"      => "enable",# recommended highly (unless breaks app)
 #"url-path-2f-reject"      => "enable",
  "url-path-dotseg-remove"  => "enable",# recommended highly (unless breaks app)
 #"url-path-dotseg-reject"  => "enable",
 #"url-query-20-plus"       => "enable",# consistency in query string
)

index-file.names            = ( "index.php", "index.html" )
url.access-deny            = ( "~", ".inc", ".engine", ".install", ".module", ".sh", "sql", ".theme", ".tpl.php", ".xtmpl", "Entries", "Repository", "Root"  )
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )

# default listening port for IPv6 falls back to the IPv4 port
include_shell "/usr/share/lighttpd/use-ipv6.pl " + server.port
include_shell "/usr/share/lighttpd/create-mime.conf.pl" 
include "/etc/lighttpd/conf-enabled/*.conf" 

deflate.cache-dir          = "/var/cache/lighttpd/compress/" 
deflate.mimetypes           = ("text/plain", "text/html", "application/x-javascript", "text/css")

$HTTP["host"] =~ "my-site.com$" {
  server.document-root       = "/var/www/my-site.com" 
  index-file.names           = ( "index.html", "index.php")
  url.rewrite = (
        "^/(.*)\.(.+)$" => "$0",
        "^/(wp-admin|wp-includes|wp-content|gallery2)/(.*)" => "$0",
        "^/(.+)/?$" => "/index.php/$1" 
  )
  server.error-handler-404 = "/index.php" 
#  url.access-deny = ( ".zip" )
}

$HTTP["host"] =~ "my-other-site.com$" {
  server.document-root       = "/var/www/my-other-site.com" 
  index-file.names           = ( "index.html", "index.php")
  url.rewrite = (
        "^/(.*)\.(.+)$" => "$0",
        "^/(wp-admin|wp-includes|wp-content|gallery2)/(.*)" => "$0",
        "^/(.+)/?$" => "/index.php/$1" 
  )
  server.error-handler-404 = "/index.php" 
#  url.access-deny = ( ".zip" )
}

# redirects

$HTTP["host"] =~ "^some-other\.com" {
  url.redirect = ( "^/(.*)" => "https://www.my-domain.com/" )
}

$HTTP["scheme"] == "http" {
        url.redirect = ("" => "https://${url.authority}${url.path}${qsa}" )
        url.redirect-code = 308
}

10-ssl.conf:

# /usr/share/doc/lighttpd/ssl.txt

server.modules += ( "mod_openssl" )

# ssl.* in global scope gets inherited by
#   $SERVER["socket"] == "..." { ssl.engine = "enable" }
ssl.engine = "enable" 
ssl.pemfile = "/etc/letsencrypt/live/www.my-site.com/fullchain.pem" 
ssl.privkey = "/etc/letsencrypt/live/www.my-site.com/privkey.pem" 
server.name = "my-site.com" 
$HTTP["host"] =~ "my-site\.com$" {
        ssl.pemfile = "/etc/letsencrypt/live/www.my-site.com/fullchain.pem" 
        ssl.privkey = "/etc/letsencrypt/live/www.my-site.com/privkey.pem" 
        server.name = "www.my-site.com" 
        }

$HTTP["host"] =~ "my-other-site\.com$" {
        ssl.pemfile = "/etc/letsencrypt/live/www.my-other-site.com/fullchain.pem" 
        ssl.privkey = "/etc/letsencrypt/live/www.my-other-site.com/privkey.pem" 
        server.name = "www.my-other-site.com" 
        }

$SERVER["socket"] == "0.0.0.0:443" {
        ssl.engine   = "enable" 

        # Environment flag for HTTPS enabled
        #setenv.add-environment = (
        #        "HTTPS" => "on" 
        #)
}

include_shell "/usr/share/lighttpd/use-ipv6.pl 443" 

WHen I look at the error log and make the request to the http site, I see this about 10 times:

2022-11-01 14:09:35: mod_openssl.c.3095) SSL: 1 error:1408F09C:SSL routines:ssl3_get_record:http request

I don't see anything in access.log

All help much appreciated.


Replies (14)

RE: probem with http to https redirect (connection reset ...) - Added by gstrauss over 1 year ago

Verify that you have actually restarted lighttpd after making config changes.
(Stop lighttpd, check the process tree, start lighttpd.)

See the commands at How to get support for how to test your config and how to print your entire config.

I have a lighty installation running on debian, everything is at latest version AFAIK.
lighttpd/1.4.59 (ssl) - a light and fast webserver

FYI: You're running Debian. Debian is almost always out-of-date except occasionally on Debian Testing.
The current version of lighttpd is lighttpd 1.4.67. lighttpd 1.4.59 was released Feb 2021, over a year and a half ago.

RE: probem with http to https redirect (connection reset ...) - Added by danmcb over 1 year ago

I am quite certain that I did restart.

lighttpd -tt -f /etc/lighttpd/lighttpd.conf gives no output - I assume that this means no error.

Here is the output of lighttpd -p -f /etc/lighttpd/lighttpd.conf - it's long but OK:

config {
    var.PID                        = 1081100
    var.CWD                        = "/home/daniel" 
    mimetype.assign                = (
        ".1905.1"      => "application/vnd.ieee.1905",
        ".pcf.Z"       => "application/x-font-pcf",
        ".tar.bz2"     => "application/x-gtar-compressed",
        ".tar.gz"      => "application/x-gtar-compressed",
        ".a2l"         => "application/A2L",
        # 5
        ".aml"         => "application/AML",
        ".atf"         => "application/ATF",
        ".atfx"        => "application/ATFX",
        ".atxml"       => "application/ATXML",
        ".cdfx"        => "application/CDFX+XML",
        # 10
        ".cea"         => "application/CEA",
        ".dcd"         => "application/DCD",
        ".dii"         => "application/DII",
        ".dit"         => "application/DIT",
        ".lxf"         => "application/LXF",
        # 15
        ".mf4"         => "application/MF4",
        ".odx"         => "application/ODX",
        ".pdx"         => "application/PDX",
        ".ez"          => "application/andrew-inset",
        ".anx"         => "application/annodex",
        # 20
        ".atom"        => "application/atom+xml",
        ".atomcat"     => "application/atomcat+xml",
        ".atomdeleted" => "application/atomdeleted+xml",
        ".atomsrv"     => "application/atomserv+xml",
        ".atomsvc"     => "application/atomsvc+xml",
        # 25
        ".dwd"         => "application/atsc-dwd+xml",
        ".held"        => "application/atsc-held+xml",
        ".rsat"        => "application/atsc-rsat+xml",
        ".apxml"       => "application/auth-policy+xml",
        ".xdd"         => "application/bacnet-xdd+zip",
        # 30
        ".lin"         => "application/bbolin",
        ".xcs"         => "application/calendar+xml",
        ".cbor"        => "application/cbor",
        ".c3ex"        => "application/cccex",
        ".ccmp"        => "application/ccmp+xml",
        # 35
        ".ccxml"       => "application/ccxml+xml",
        ".cdmia"       => "application/cdmi-capability",
        ".cdmic"       => "application/cdmi-container",
        ".cdmid"       => "application/cdmi-domain",
        ".cdmio"       => "application/cdmi-object",
        # 40
        ".cdmiq"       => "application/cdmi-queue",
        ".cellml"      => "application/cellml+xml",
        ".cml"         => "application/cellml+xml",
        ".cmsc"        => "application/cms",
        ".cpl"         => "application/cpl+xml",
        # 45
        ".csrattrs"    => "application/csrattrs",
        ".cu"          => "application/cu-seeme",
        ".mpd"         => "application/dash+xml",
        ".mpdd"        => "application/dashdelta",
        ".davmount"    => "application/davmount+xml",
        # 50
        ".dcm"         => "application/dicom",
        ".xmls"        => "application/dskpp+xml",
        ".tsp"         => "application/dsptype",
        ".dssc"        => "application/dssc+der",
        ".xdssc"       => "application/dssc+xml",
        # 55
        ".dvc"         => "application/dvcs",
        ".es"          => "application/ecmascript",
        ".efi"         => "application/efi",
        ".emma"        => "application/emma+xml",
        ".emotionml"   => "application/emotionml+xml",
        # 60
        ".epub"        => "application/epub+zip",
        ".exi"         => "application/exi",
        ".finf"        => "application/fastinfoset",
        ".fdt"         => "application/fdt+xml",
        ".pfr"         => "application/font-tdpfr",
        # 65
        ".spl"         => "application/futuresplash",
        ".geojson"     => "application/geo+json",
        ".gpkg"        => "application/geopackage+sqlite3",
        ".glbin"       => "application/gltf-buffer",
        ".glbuf"       => "application/gltf-buffer",
        # 70
        ".gml"         => "application/gml+xml",
        ".gz"          => "application/gzip",
        ".hta"         => "application/hta",
        ".stk"         => "application/hyperstudio",
        ".ink"         => "application/inkml+xml",
        # 75
        ".inkml"       => "application/inkml+xml",
        ".ipfix"       => "application/ipfix",
        ".its"         => "application/its+xml",
        ".jar"         => "application/java-archive",
        ".ser"         => "application/java-serialized-object",
        # 80
        ".class"       => "application/java-vm",
        ".js"          => "application/javascript",
        ".mjs"         => "application/javascript",
        ".jrd"         => "application/jrd+json",
        ".json"        => "application/json",
        # 85
        ".json-patch"  => "application/json-patch+json",
        ".jsonld"      => "application/ld+json",
        ".lgr"         => "application/lgr+xml",
        ".wlnk"        => "application/link-format",
        ".lostxml"     => "application/lost+xml",
        # 90
        ".lostsyncxml" => "application/lostsync+xml",
        ".lpf"         => "application/lpf+zip",
        ".m3g"         => "application/m3g",
        ".hqx"         => "application/mac-binhex40",
        ".cpt"         => "application/mac-compactpro",
        # 95
        ".mads"        => "application/mads+xml",
        ".mrc"         => "application/marc",
        ".mrcx"        => "application/marcxml+xml",
        ".ma"          => "application/mathematica",
        ".mb"          => "application/mathematica",
        # 100
        ".mml"         => "application/mathml+xml",
        ".mbox"        => "application/mbox",
        ".meta4"       => "application/metalink4+xml",
        ".mets"        => "application/mets+xml",
        ".maei"        => "application/mmt-aei+xml",
        # 105
        ".musd"        => "application/mmt-usd+xml",
        ".mods"        => "application/mods+xml",
        ".m21"         => "application/mp21",
        ".mp21"        => "application/mp21",
        ".mdb"         => "application/msaccess",
        # 110
        ".doc"         => "application/msword",
        ".mxf"         => "application/mxf",
        ".nq"          => "application/n-quads",
        ".nt"          => "application/n-triples",
        ".orq"         => "application/ocsp-request",
        # 115
        ".ors"         => "application/ocsp-response",
        ".asn"         => "application/octet-stream",
        ".bin"         => "application/octet-stream",
        ".deploy"      => "application/octet-stream",
        ".msp"         => "application/octet-stream",
        # 120
        ".msu"         => "application/octet-stream",
        ".oda"         => "application/oda",
        ".opf"         => "application/oebps-package+xml",
        ".ogx"         => "application/ogg",
        ".one"         => "application/onenote",
        # 125
        ".onepkg"      => "application/onenote",
        ".onetmp"      => "application/onenote",
        ".onetoc2"     => "application/onenote",
        ".oxps"        => "application/oxps",
        ".relo"        => "application/p2p-overlay+xml",
        # 130
        ".pdf"         => "application/pdf",
        ".pem"         => "application/pem-certificate-chain",
        ".pgp"         => "application/pgp-encrypted",
        ".asc"         => "application/pgp-keys",
        ".key"         => "application/pgp-keys",
        # 135
        ".sig"         => "application/pgp-signature",
        ".prf"         => "application/pics-rules",
        ".p10"         => "application/pkcs10",
        ".p12"         => "application/pkcs12",
        ".pfx"         => "application/pkcs12",
        # 140
        ".p7c"         => "application/pkcs7-mime",
        ".p7m"         => "application/pkcs7-mime",
        ".p7z"         => "application/pkcs7-mime",
        ".p7s"         => "application/pkcs7-signature",
        ".p8"          => "application/pkcs8",
        # 145
        ".p8e"         => "application/pkcs8-encrypted",
        ".ac"          => "application/pkix-attr-cert",
        ".cer"         => "application/pkix-cert",
        ".crl"         => "application/pkix-crl",
        ".pkipath"     => "application/pkix-pkipath",
        # 150
        ".pki"         => "application/pkixcmp",
        ".ai"          => "application/postscript",
        ".eps"         => "application/postscript",
        ".eps2"        => "application/postscript",
        ".eps3"        => "application/postscript",
        # 155
        ".epsf"        => "application/postscript",
        ".epsi"        => "application/postscript",
        ".ps"          => "application/postscript",
        ".provx"       => "application/provenance+xml",
        ".cw"          => "application/prs.cww",
        # 160
        ".cww"         => "application/prs.cww",
        ".hpub"        => "application/prs.hpub+zip",
        ".rct"         => "application/prs.nprend",
        ".rnd"         => "application/prs.nprend",
        ".rdf-crypt"   => "application/prs.rdf-xml-crypt",
        # 165
        ".xsf"         => "application/prs.xsf+xml",
        ".pskcxml"     => "application/pskc+xml",
        ".rdf"         => "application/rdf+xml",
        ".rif"         => "application/reginfo+xml",
        ".rnc"         => "application/relax-ng-compact-syntax",
        # 170
        ".rl"          => "application/resource-lists+xml",
        ".rld"         => "application/resource-lists-diff+xml",
        ".rfcxml"      => "application/rfc+xml",
        ".rs"          => "application/rls-services+xml",
        ".rapd"        => "application/route-apd+xml",
        # 175
        ".sls"         => "application/route-s-tsid+xml",
        ".rusd"        => "application/route-usd+xml",
        ".gbr"         => "application/rpki-ghostbusters",
        ".mft"         => "application/rpki-manifest",
        ".roa"         => "application/rpki-roa",
        # 180
        ".rtf"         => "application/rtf",
        ".scim"        => "application/scim+json",
        ".scq"         => "application/scvp-cv-request",
        ".scs"         => "application/scvp-cv-response",
        ".spq"         => "application/scvp-vp-request",
        # 185
        ".spp"         => "application/scvp-vp-response",
        ".sdp"         => "application/sdp",
        ".senmlc"      => "application/senml+cbor",
        ".senml"       => "application/senml+json",
        ".senmlx"      => "application/senml+xml",
        # 190
        ".senml-etchc" => "application/senml-etch+cbor",
        ".senml-etchj" => "application/senml-etch+json",
        ".senmle"      => "application/senml-exi",
        ".sensmlc"     => "application/sensml+cbor",
        ".sensml"      => "application/sensml+json",
        # 195
        ".sensmlx"     => "application/sensml+xml",
        ".sensmle"     => "application/sensml-exi",
        ".soc"         => "application/sgml-open-catalog",
        ".shf"         => "application/shf+xml",
        ".sieve"       => "application/sieve",
        # 200
        ".siv"         => "application/sieve",
        ".cl"          => "application/simple-filter+xml",
        ".smi"         => "application/smil+xml",
        ".smil"        => "application/smil+xml",
        ".sml"         => "application/smil+xml",
        # 205
        ".rq"          => "application/sparql-query",
        ".srx"         => "application/sparql-results+xml",
        ".sql"         => "application/sql",
        ".gram"        => "application/srgs",
        ".grxml"       => "application/srgs+xml",
        # 210
        ".sru"         => "application/sru+xml",
        ".ssml"        => "application/ssml+xml",
        ".stix"        => "application/stix+json",
        ".swidtag"     => "application/swid+xml",
        ".tau"         => "application/tamp-apex-update",
        # 215
        ".auc"         => "application/tamp-apex-update-confirm",
        ".tcu"         => "application/tamp-community-update",
        ".cuc"         => "application/tamp-community-update-confirm",
        ".ter"         => "application/tamp-error",
        ".tsa"         => "application/tamp-sequence-adjust",
        # 220
        ".sac"         => "application/tamp-sequence-adjust-confirm",
        ".tur"         => "application/tamp-update",
        ".tuc"         => "application/tamp-update-confirm",
        ".jsontd"      => "application/td+json",
        ".odd"         => "application/tei+xml",
        # 225
        ".tei"         => "application/tei+xml",
        ".teiCorpus"   => "application/tei+xml",
        ".tfi"         => "application/thraud+xml",
        ".tsq"         => "application/timestamp-query",
        ".tsr"         => "application/timestamp-reply",
        # 230
        ".tsd"         => "application/timestamped-data",
        ".trig"        => "application/trig",
        ".ttml"        => "application/ttml+xml",
        ".gsheet"      => "application/urc-grpsheet+xml",
        ".rsheet"      => "application/urc-ressheet+xml",
        # 235
        ".td"          => "application/urc-targetdesc+xml",
        ".uis"         => "application/urc-uisocketdesc+xml",
        ".vxml"        => "application/voicexml+xml",
        ".vcj"         => "application/voucher-cms+json",
        ".wasm"        => "application/wasm",
        # 240
        ".wif"         => "application/watcherinfo+xml",
        ".wgt"         => "application/widget",
        ".wsdl"        => "application/wsdl+xml",
        ".wspolicy"    => "application/wspolicy+xml",
        ".xav"         => "application/xcap-att+xml",
        # 245
        ".xca"         => "application/xcap-caps+xml",
        ".xdf"         => "application/xcap-diff+xml",
        ".xel"         => "application/xcap-el+xml",
        ".xer"         => "application/xcap-error+xml",
        ".xns"         => "application/xcap-ns+xml",
        # 250
        ".xht"         => "application/xhtml+xml",
        ".xhtm"        => "application/xhtml+xml",
        ".xhtml"       => "application/xhtml+xml",
        ".xlf"         => "application/xliff+xml",
        ".xml"         => "application/xml",
        # 255
        ".dtd"         => "application/xml-dtd",
        ".mod"         => "application/xml-dtd",
        ".ent"         => "application/xml-external-parsed-entity",
        ".xop"         => "application/xop+xml",
        ".xsl"         => "application/xslt+xml",
        # 260
        ".xslt"        => "application/xslt+xml",
        ".xspf"        => "application/xspf+xml",
        ".mxml"        => "application/xv+xml",
        ".xhvml"       => "application/xv+xml",
        ".xvm"         => "application/xv+xml",
        # 265
        ".xvml"        => "application/xv+xml",
        ".yang"        => "application/yang",
        ".yin"         => "application/yin+xml",
        ".zip"         => "application/zip",
        ".zst"         => "application/zstd",
        # 270
        ".1km"         => "application/vnd.1000minds.decision-model+xml",
        ".pwn"         => "application/vnd.3M.Post-it-Notes",
        ".plb"         => "application/vnd.3gpp.pic-bw-large",
        ".psb"         => "application/vnd.3gpp.pic-bw-small",
        ".pvb"         => "application/vnd.3gpp.pic-bw-var",
        # 275
        ".sms"         => "application/vnd.3gpp2.sms",
        ".tcap"        => "application/vnd.3gpp2.tcap",
        ".imgcal"      => "application/vnd.3lightssoftware.imagescal",
        ".gph"         => "application/vnd.FloGraphIt",
        ".zmm"         => "application/vnd.HandHeld-Entertainment+xml",
        # 280
        ".kne"         => "application/vnd.Kinar",
        ".knp"         => "application/vnd.Kinar",
        ".sdf"         => "application/vnd.Kinar",
        ".mwf"         => "application/vnd.MFER",
        ".daf"         => "application/vnd.Mobius.DAF",
        # 285
        ".dis"         => "application/vnd.Mobius.DIS",
        ".mbk"         => "application/vnd.Mobius.MBK",
        ".mqy"         => "application/vnd.Mobius.MQY",
        ".msl"         => "application/vnd.Mobius.MSL",
        ".plc"         => "application/vnd.Mobius.PLC",
        # 290
        ".txf"         => "application/vnd.Mobius.TXF",
        ".qwd"         => "application/vnd.Quark.QuarkXPress",
        ".qwt"         => "application/vnd.Quark.QuarkXPress",
        ".qxb"         => "application/vnd.Quark.QuarkXPress",
        ".qxd"         => "application/vnd.Quark.QuarkXPress",
        # 295
        ".qxl"         => "application/vnd.Quark.QuarkXPress",
        ".qxt"         => "application/vnd.Quark.QuarkXPress",
        ".twd"         => "application/vnd.SimTech-MindMapper",
        ".twds"        => "application/vnd.SimTech-MindMapper",
        ".aso"         => "application/vnd.accpac.simply.aso",
        # 300
        ".imp"         => "application/vnd.accpac.simply.imp",
        ".acu"         => "application/vnd.acucobol",
        ".acutc"       => "application/vnd.acucorp",
        ".atc"         => "application/vnd.acucorp",
        ".swf"         => "application/vnd.adobe.flash.movie",
        # 305
        ".fcdt"        => "application/vnd.adobe.formscentral.fcdt",
        ".fxp"         => "application/vnd.adobe.fxp",
        ".fxpl"        => "application/vnd.adobe.fxp",
        ".xdp"         => "application/vnd.adobe.xdp+xml",
        ".xfdf"        => "application/vnd.adobe.xfdf",
        # 310
        ".afp"         => "application/vnd.afpc.modca",
        ".list3820"    => "application/vnd.afpc.modca",
        ".listafp"     => "application/vnd.afpc.modca",
        ".pseg3820"    => "application/vnd.afpc.modca",
        ".ovl"         => "application/vnd.afpc.modca-overlay",
        # 315
        ".psg"         => "application/vnd.afpc.modca-pagesegment",
        ".ahead"       => "application/vnd.ahead.space",
        ".azf"         => "application/vnd.airzip.filesecure.azf",
        ".azs"         => "application/vnd.airzip.filesecure.azs",
        ".azw3"        => "application/vnd.amazon.mobi8-ebook",
        # 320
        ".acc"         => "application/vnd.americandynamics.acc",
        ".ami"         => "application/vnd.amiga.ami",
        ".ota"         => "application/vnd.android.ota",
        ".apk"         => "application/vnd.android.package-archive",
        ".apkg"        => "application/vnd.anki",
        # 325
        ".cii"         => "application/vnd.anser-web-certificate-issue-initiation",
        ".fti"         => "application/vnd.anser-web-funds-transfer-initiation",
        ".dist"        => "application/vnd.apple.installer+xml",
        ".distz"       => "application/vnd.apple.installer+xml",
        ".mpkg"        => "application/vnd.apple.installer+xml",
        # 330
        ".pkg"         => "application/vnd.apple.installer+xml",
        ".keynote"     => "application/vnd.apple.keynote",
        ".m3u8"        => "application/vnd.apple.mpegurl",
        ".numbers"     => "application/vnd.apple.numbers",
        ".pages"       => "application/vnd.apple.pages",
        # 335
        ".swi"         => "application/vnd.aristanetworks.swi",
        ".artisan"     => "application/vnd.artisan+json",
        ".iota"        => "application/vnd.astraea-software.iota",
        ".aep"         => "application/vnd.audiograph",
        ".package"     => "application/vnd.autopackage",
        # 340
        ".bmml"        => "application/vnd.balsamiq.bmml+xml",
        ".bmpr"        => "application/vnd.balsamiq.bmpr",
        ".ac2"         => "application/vnd.banana-accounting",
        ".mpm"         => "application/vnd.blueice.multipass",
        ".ep"          => "application/vnd.bluetooth.ep.oob",
        # 345
        ".le"          => "application/vnd.bluetooth.le.oob",
        ".bmi"         => "application/vnd.bmi",
        ".rep"         => "application/vnd.businessobjects",
        ".tlclient"    => "application/vnd.cendio.thinlinc.clientconf",
        ".cdxml"       => "application/vnd.chemdraw+xml",
        # 350
        ".pgn"         => "application/vnd.chess-pgn",
        ".mmd"         => "application/vnd.chipnuts.karaoke-mmd",
        ".cdy"         => "application/vnd.cinderella",
        ".csl"         => "application/vnd.citationstyles.style+xml",
        ".cla"         => "application/vnd.claymore",
        # 355
        ".rp9"         => "application/vnd.cloanto.rp9",
        ".c4d"         => "application/vnd.clonk.c4group",
        ".c4f"         => "application/vnd.clonk.c4group",
        ".c4g"         => "application/vnd.clonk.c4group",
        ".c4p"         => "application/vnd.clonk.c4group",
        # 360
        ".c4u"         => "application/vnd.clonk.c4group",
        ".c11amc"      => "application/vnd.cluetrust.cartomobile-config",
        ".c11amz"      => "application/vnd.cluetrust.cartomobile-config-pkg",
        ".coffee"      => "application/vnd.coffeescript",
        ".xodt"        => "application/vnd.collabio.xodocuments.document",
        # 365
        ".xott"        => "application/vnd.collabio.xodocuments.document-template",
        ".xodp"        => "application/vnd.collabio.xodocuments.presentation",
        ".xotp"        => "application/vnd.collabio.xodocuments.presentation-template",
        ".xods"        => "application/vnd.collabio.xodocuments.spreadsheet",
        ".xots"        => "application/vnd.collabio.xodocuments.spreadsheet-template",
        # 370
        ".cbz"         => "application/vnd.comicbook+zip",
        ".cbr"         => "application/vnd.comicbook-rar",
        ".ic0"         => "application/vnd.commerce-battelle",
        ".ic1"         => "application/vnd.commerce-battelle",
        ".ic2"         => "application/vnd.commerce-battelle",
        # 375
        ".ic3"         => "application/vnd.commerce-battelle",
        ".ic4"         => "application/vnd.commerce-battelle",
        ".ic5"         => "application/vnd.commerce-battelle",
        ".ic6"         => "application/vnd.commerce-battelle",
        ".ic7"         => "application/vnd.commerce-battelle",
        # 380
        ".ic8"         => "application/vnd.commerce-battelle",
        ".icd"         => "application/vnd.commerce-battelle",
        ".icf"         => "application/vnd.commerce-battelle",
        ".csp"         => "application/vnd.commonspace",
        ".cst"         => "application/vnd.commonspace",
        # 385
        ".cdbcmsg"     => "application/vnd.contact.cmsg",
        ".ign"         => "application/vnd.coreos.ignition+json",
        ".ignition"    => "application/vnd.coreos.ignition+json",
        ".cmc"         => "application/vnd.cosmocaller",
        ".clkx"        => "application/vnd.crick.clicker",
        # 390
        ".clkk"        => "application/vnd.crick.clicker.keyboard",
        ".clkp"        => "application/vnd.crick.clicker.palette",
        ".clkt"        => "application/vnd.crick.clicker.template",
        ".clkw"        => "application/vnd.crick.clicker.wordbank",
        ".wbs"         => "application/vnd.criticaltools.wbs+xml",
        # 395
        ".ssvc"        => "application/vnd.crypto-shade-file",
        ".pml"         => "application/vnd.ctc-posml",
        ".ppd"         => "application/vnd.cups-ppd",
        ".dart"        => "application/vnd.dart",
        ".rdz"         => "application/vnd.data-vision.rdz",
        # 400
        ".dbf"         => "application/vnd.dbf",
        ".ddeb"        => "application/vnd.debian.binary-package",
        ".deb"         => "application/vnd.debian.binary-package",
        ".udeb"        => "application/vnd.debian.binary-package",
        ".uvd"         => "application/vnd.dece.data",
        # 405
        ".uvf"         => "application/vnd.dece.data",
        ".uvvd"        => "application/vnd.dece.data",
        ".uvvf"        => "application/vnd.dece.data",
        ".uvt"         => "application/vnd.dece.ttml+xml",
        ".uvvt"        => "application/vnd.dece.ttml+xml",
        # 410
        ".uvvx"        => "application/vnd.dece.unspecified",
        ".uvx"         => "application/vnd.dece.unspecified",
        ".uvvz"        => "application/vnd.dece.zip",
        ".uvz"         => "application/vnd.dece.zip",
        ".dsm"         => "application/vnd.desmume.movie",
        # 415
        ".dna"         => "application/vnd.dna",
        ".docjson"     => "application/vnd.document+json",
        ".scld"        => "application/vnd.doremir.scorecloud-binary-document",
        ".dpg"         => "application/vnd.dpgraph",
        ".dpgraph"     => "application/vnd.dpgraph",
        # 420
        ".mwc"         => "application/vnd.dpgraph",
        ".dfac"        => "application/vnd.dreamfactory",
        ".fla"         => "application/vnd.dtg.local.flash",
        ".ait"         => "application/vnd.dvb.ait",
        ".svc"         => "application/vnd.dvb.service",
        # 425
        ".geo"         => "application/vnd.dynageo",
        ".dzr"         => "application/vnd.dzr",
        ".mag"         => "application/vnd.ecowin.chart",
        ".nml"         => "application/vnd.enliven",
        ".esf"         => "application/vnd.epson.esf",
        # 430
        ".msf"         => "application/vnd.epson.msf",
        ".qam"         => "application/vnd.epson.quickanime",
        ".slt"         => "application/vnd.epson.salt",
        ".ssf"         => "application/vnd.epson.ssf",
        ".qca"         => "application/vnd.ericsson.quickcall",
        # 435
        ".qcall"       => "application/vnd.ericsson.quickcall",
        ".espass"      => "application/vnd.espass-espass+zip",
        ".es3"         => "application/vnd.eszigno3+xml",
        ".et3"         => "application/vnd.eszigno3+xml",
        ".asice"       => "application/vnd.etsi.asic-e+zip",
        # 440
        ".sce"         => "application/vnd.etsi.asic-e+zip",
        ".asics"       => "application/vnd.etsi.asic-s+zip",
        ".tst"         => "application/vnd.etsi.timestamp-token",
        ".ecigprofile" => "application/vnd.evolv.ecig.profile",
        ".ecig"        => "application/vnd.evolv.ecig.settings",
        # 445
        ".ecigtheme"   => "application/vnd.evolv.ecig.theme",
        ".mpw"         => "application/vnd.exstream-empower+zip",
        ".pub"         => "application/vnd.exstream-package",
        ".ez2"         => "application/vnd.ezpix-album",
        ".ez3"         => "application/vnd.ezpix-package",
        # 450
        ".dim"         => "application/vnd.fastcopy-disk-image",
        ".fdf"         => "application/vnd.fdf",
        ".msd"         => "application/vnd.fdsn.mseed",
        ".mseed"       => "application/vnd.fdsn.mseed",
        ".dataless"    => "application/vnd.fdsn.seed",
        # 455
        ".seed"        => "application/vnd.fdsn.seed",
        ".flb"         => "application/vnd.ficlab.flb+zip",
        ".zfc"         => "application/vnd.filmit.zfc",
        ".ftc"         => "application/vnd.fluxtime.clip",
        ".sfd"         => "application/vnd.font-fontforge-sfd",
        # 460
        ".fm"          => "application/vnd.framemaker",
        ".fsc"         => "application/vnd.fsc.weblaunch",
        ".oas"         => "application/vnd.fujitsu.oasys",
        ".oa2"         => "application/vnd.fujitsu.oasys2",
        ".oa3"         => "application/vnd.fujitsu.oasys3",
        # 465
        ".fg5"         => "application/vnd.fujitsu.oasysgp",
        ".bh2"         => "application/vnd.fujitsu.oasysprs",
        ".ddd"         => "application/vnd.fujixerox.ddd",
        ".xdw"         => "application/vnd.fujixerox.docuworks",
        ".xbd"         => "application/vnd.fujixerox.docuworks.binder",
        # 470
        ".xct"         => "application/vnd.fujixerox.docuworks.container",
        ".fzs"         => "application/vnd.fuzzysheet",
        ".txd"         => "application/vnd.genomatix.tuxedo",
        ".ggb"         => "application/vnd.geogebra.file",
        ".ggt"         => "application/vnd.geogebra.tool",
        # 475
        ".gex"         => "application/vnd.geometry-explorer",
        ".gre"         => "application/vnd.geometry-explorer",
        ".gxt"         => "application/vnd.geonext",
        ".g2w"         => "application/vnd.geoplan",
        ".g3w"         => "application/vnd.geospace",
        # 480
        ".kml"         => "application/vnd.google-earth.kml+xml",
        ".kmz"         => "application/vnd.google-earth.kmz",
        ".gqf"         => "application/vnd.grafeq",
        ".gqs"         => "application/vnd.grafeq",
        ".gac"         => "application/vnd.groove-account",
        # 485
        ".ghf"         => "application/vnd.groove-help",
        ".gim"         => "application/vnd.groove-identity-message",
        ".grv"         => "application/vnd.groove-injector",
        ".gtm"         => "application/vnd.groove-tool-message",
        ".tpl"         => "application/vnd.groove-tool-template",
        # 490
        ".vcg"         => "application/vnd.groove-vcard",
        ".hal"         => "application/vnd.hal+xml",
        ".bpd"         => "application/vnd.hbci",
        ".hbc"         => "application/vnd.hbci",
        ".hbci"        => "application/vnd.hbci",
        # 495
        ".kom"         => "application/vnd.hbci",
        ".pkd"         => "application/vnd.hbci",
        ".upa"         => "application/vnd.hbci",
        ".hdt"         => "application/vnd.hdt",
        ".les"         => "application/vnd.hhe.lesson-player",
        # 500
        ".hpgl"        => "application/vnd.hp-HPGL",
        ".pcl"         => "application/vnd.hp-PCL",
        ".hpi"         => "application/vnd.hp-hpid",
        ".hpid"        => "application/vnd.hp-hpid",
        ".hps"         => "application/vnd.hp-hps",
        # 505
        ".jlt"         => "application/vnd.hp-jlyt",
        ".sfd-hdstx"   => "application/vnd.hydrostatix.sof-data",
        ".mpy"         => "application/vnd.ibm.MiniPay",
        ".emm"         => "application/vnd.ibm.electronic-media",
        ".irm"         => "application/vnd.ibm.rights-management",
        # 510
        ".sc"          => "application/vnd.ibm.secure-container",
        ".icc"         => "application/vnd.iccprofile",
        ".icm"         => "application/vnd.iccprofile",
        ".igl"         => "application/vnd.igloader",
        ".imf"         => "application/vnd.imagemeter.folder+zip",
        # 515
        ".imi"         => "application/vnd.imagemeter.image+zip",
        ".ivp"         => "application/vnd.immervision-ivp",
        ".ivu"         => "application/vnd.immervision-ivu",
        ".imscc"       => "application/vnd.ims.imsccv1p1",
        ".igm"         => "application/vnd.insors.igm",
        # 520
        ".xpw"         => "application/vnd.intercon.formnet",
        ".xpx"         => "application/vnd.intercon.formnet",
        ".i2g"         => "application/vnd.intergeo",
        ".qbo"         => "application/vnd.intu.qbo",
        ".qfx"         => "application/vnd.intu.qfx",
        # 525
        ".rcprofile"   => "application/vnd.ipunplugged.rcprofile",
        ".irp"         => "application/vnd.irepository.package+xml",
        ".xpr"         => "application/vnd.is-xpr",
        ".fcs"         => "application/vnd.isac.fcs",
        ".jam"         => "application/vnd.jam",
        # 530
        ".rms"         => "application/vnd.jcp.javame.midlet-rms",
        ".jisp"        => "application/vnd.jisp",
        ".joda"        => "application/vnd.joost.joda-archive",
        ".ktr"         => "application/vnd.kahootz",
        ".ktz"         => "application/vnd.kahootz",
        # 535
        ".karbon"      => "application/vnd.kde.karbon",
        ".chrt"        => "application/vnd.kde.kchart",
        ".kfo"         => "application/vnd.kde.kformula",
        ".flw"         => "application/vnd.kde.kivio",
        ".kon"         => "application/vnd.kde.kontour",
        # 540
        ".kpr"         => "application/vnd.kde.kpresenter",
        ".kpt"         => "application/vnd.kde.kpresenter",
        ".ksp"         => "application/vnd.kde.kspread",
        ".kwd"         => "application/vnd.kde.kword",
        ".kwt"         => "application/vnd.kde.kword",
        # 545
        ".htke"        => "application/vnd.kenameaapp",
        ".kia"         => "application/vnd.kidspiration",
        ".skd"         => "application/vnd.koan",
        ".skm"         => "application/vnd.koan",
        ".skp"         => "application/vnd.koan",
        # 550
        ".skt"         => "application/vnd.koan",
        ".sse"         => "application/vnd.kodak-descriptor",
        ".lasjson"     => "application/vnd.las.las+json",
        ".lasxml"      => "application/vnd.las.las+xml",
        ".lbd"         => "application/vnd.llamagraphics.life-balance.desktop",
        # 555
        ".lbe"         => "application/vnd.llamagraphics.life-balance.exchange+xml",
        ".lca"         => "application/vnd.logipipe.circuit+zip",
        ".lcs"         => "application/vnd.logipipe.circuit+zip",
        ".loom"        => "application/vnd.loom",
        ".123"         => "application/vnd.lotus-1-2-3",
        # 560
        ".wk1"         => "application/vnd.lotus-1-2-3",
        ".wk3"         => "application/vnd.lotus-1-2-3",
        ".wk4"         => "application/vnd.lotus-1-2-3",
        ".apr"         => "application/vnd.lotus-approach",
        ".vew"         => "application/vnd.lotus-approach",
        # 565
        ".pre"         => "application/vnd.lotus-freelance",
        ".prz"         => "application/vnd.lotus-freelance",
        ".ndl"         => "application/vnd.lotus-notes",
        ".ns2"         => "application/vnd.lotus-notes",
        ".ns3"         => "application/vnd.lotus-notes",
        # 570
        ".ns4"         => "application/vnd.lotus-notes",
        ".nsf"         => "application/vnd.lotus-notes",
        ".nsg"         => "application/vnd.lotus-notes",
        ".nsh"         => "application/vnd.lotus-notes",
        ".ntf"         => "application/vnd.lotus-notes",
        # 575
        ".or2"         => "application/vnd.lotus-organizer",
        ".or3"         => "application/vnd.lotus-organizer",
        ".org"         => "application/vnd.lotus-organizer",
        ".scm"         => "application/vnd.lotus-screencam",
        ".lwp"         => "application/vnd.lotus-wordpro",
        # 580
        ".sam"         => "application/vnd.lotus-wordpro",
        ".portpkg"     => "application/vnd.macports.portpkg",
        ".mvt"         => "application/vnd.mapbox-vector-tile",
        ".mdc"         => "application/vnd.marlin.drm.mdcf",
        ".mmdb"        => "application/vnd.maxmind.maxmind-db",
        # 585
        ".mcd"         => "application/vnd.mcd",
        ".mc1"         => "application/vnd.medcalcdata",
        ".cdkey"       => "application/vnd.mediastation.cdkey",
        ".mfm"         => "application/vnd.mfmp",
        ".flo"         => "application/vnd.micrografx.flo",
        # 590
        ".igx"         => "application/vnd.micrografx.igx",
        ".mif"         => "application/vnd.mif",
        ".mpn"         => "application/vnd.mophun.application",
        ".mpc"         => "application/vnd.mophun.certificate",
        ".xul"         => "application/vnd.mozilla.xul+xml",
        # 595
        ".3mf"         => "application/vnd.ms-3mfdocument",
        ".cil"         => "application/vnd.ms-artgalry",
        ".asf"         => "application/vnd.ms-asf",
        ".cab"         => "application/vnd.ms-cab-compressed",
        ".xla"         => "application/vnd.ms-excel",
        # 600
        ".xlc"         => "application/vnd.ms-excel",
        ".xlm"         => "application/vnd.ms-excel",
        ".xls"         => "application/vnd.ms-excel",
        ".xlt"         => "application/vnd.ms-excel",
        ".xlw"         => "application/vnd.ms-excel",
        # 605
        ".xlam"        => "application/vnd.ms-excel.addin.macroEnabled.12",
        ".xlsb"        => "application/vnd.ms-excel.sheet.binary.macroEnabled.12",
        ".xlsm"        => "application/vnd.ms-excel.sheet.macroEnabled.12",
        ".xltm"        => "application/vnd.ms-excel.template.macroEnabled.12",
        ".eot"         => "application/vnd.ms-fontobject",
        # 610
        ".chm"         => "application/vnd.ms-htmlhelp",
        ".ims"         => "application/vnd.ms-ims",
        ".lrm"         => "application/vnd.ms-lrm",
        ".thmx"        => "application/vnd.ms-officetheme",
        ".cat"         => "application/vnd.ms-pki.seccat",
        # 615
        ".pps"         => "application/vnd.ms-powerpoint",
        ".ppt"         => "application/vnd.ms-powerpoint",
        ".ppam"        => "application/vnd.ms-powerpoint.addin.macroEnabled.12",
        ".pptm"        => "application/vnd.ms-powerpoint.presentation.macroEnabled.12",
        ".sldm"        => "application/vnd.ms-powerpoint.slide.macroEnabled.12",
        # 620
        ".ppsm"        => "application/vnd.ms-powerpoint.slideshow.macroEnabled.12",
        ".potm"        => "application/vnd.ms-powerpoint.template.macroEnabled.12",
        ".mpp"         => "application/vnd.ms-project",
        ".mpt"         => "application/vnd.ms-project",
        ".tnef"        => "application/vnd.ms-tnef",
        # 625
        ".tnf"         => "application/vnd.ms-tnef",
        ".docm"        => "application/vnd.ms-word.document.macroEnabled.12",
        ".dotm"        => "application/vnd.ms-word.template.macroEnabled.12",
        ".wcm"         => "application/vnd.ms-works",
        ".wdb"         => "application/vnd.ms-works",
        # 630
        ".wks"         => "application/vnd.ms-works",
        ".wps"         => "application/vnd.ms-works",
        ".wpl"         => "application/vnd.ms-wpl",
        ".xps"         => "application/vnd.ms-xpsdocument",
        ".msa"         => "application/vnd.msa-disk-image",
        # 635
        ".mseq"        => "application/vnd.mseq",
        ".crtr"        => "application/vnd.multiad.creator",
        ".cif"         => "application/vnd.multiad.creator.cif",
        ".mus"         => "application/vnd.musician",
        ".msty"        => "application/vnd.muvee.style",
        # 640
        ".taglet"      => "application/vnd.mynfc",
        ".bkm"         => "application/vnd.nervana",
        ".entity"      => "application/vnd.nervana",
        ".kcm"         => "application/vnd.nervana",
        ".request"     => "application/vnd.nervana",
        # 645
        ".nlu"         => "application/vnd.neurolanguage.nlu",
        ".nimn"        => "application/vnd.nimn",
        ".nds"         => "application/vnd.nintendo.nitro.rom",
        ".sfc"         => "application/vnd.nintendo.snes.rom",
        ".smc"         => "application/vnd.nintendo.snes.rom",
        # 650
        ".nitf"        => "application/vnd.nitf",
        ".nnd"         => "application/vnd.noblenet-directory",
        ".nns"         => "application/vnd.noblenet-sealer",
        ".nnw"         => "application/vnd.noblenet-web",
        ".ngdat"       => "application/vnd.nokia.n-gage.data",
        # 655
        ".rpst"        => "application/vnd.nokia.radio-preset",
        ".rpss"        => "application/vnd.nokia.radio-presets",
        ".edm"         => "application/vnd.novadigm.EDM",
        ".edx"         => "application/vnd.novadigm.EDX",
        ".ext"         => "application/vnd.novadigm.EXT",
        # 660
        ".odc"         => "application/vnd.oasis.opendocument.chart",
        ".otc"         => "application/vnd.oasis.opendocument.chart-template",
        ".odb"         => "application/vnd.oasis.opendocument.database",
        ".odf"         => "application/vnd.oasis.opendocument.formula",
        ".odg"         => "application/vnd.oasis.opendocument.graphics",
        # 665
        ".otg"         => "application/vnd.oasis.opendocument.graphics-template",
        ".odi"         => "application/vnd.oasis.opendocument.image",
        ".oti"         => "application/vnd.oasis.opendocument.image-template",
        ".odp"         => "application/vnd.oasis.opendocument.presentation",
        ".otp"         => "application/vnd.oasis.opendocument.presentation-template",
        # 670
        ".ods"         => "application/vnd.oasis.opendocument.spreadsheet",
        ".ots"         => "application/vnd.oasis.opendocument.spreadsheet-template",
        ".odt"         => "application/vnd.oasis.opendocument.text",
        ".odm"         => "application/vnd.oasis.opendocument.text-master",
        ".ott"         => "application/vnd.oasis.opendocument.text-template",
        # 675
        ".oth"         => "application/vnd.oasis.opendocument.text-web",
        ".xo"          => "application/vnd.olpc-sugar",
        ".dd2"         => "application/vnd.oma.dd2+xml",
        ".tam"         => "application/vnd.onepager",
        ".tamp"        => "application/vnd.onepagertamp",
        # 680
        ".tamx"        => "application/vnd.onepagertamx",
        ".tat"         => "application/vnd.onepagertat",
        ".tatp"        => "application/vnd.onepagertatp",
        ".tatx"        => "application/vnd.onepagertatx",
        ".obgx"        => "application/vnd.openblox.game+xml",
        # 685
        ".obg"         => "application/vnd.openblox.game-binary",
        ".oeb"         => "application/vnd.openeye.oeb",
        ".oxt"         => "application/vnd.openofficeorg.extension",
        ".osm"         => "application/vnd.openstreetmap.data+xml",
        ".pptx"        => "application/vnd.openxmlformats-officedocument.presentationml.presentation",
        # 690
        ".sldx"        => "application/vnd.openxmlformats-officedocument.presentationml.slide",
        ".ppsx"        => "application/vnd.openxmlformats-officedocument.presentationml.slideshow",
        ".potx"        => "application/vnd.openxmlformats-officedocument.presentationml.template",
        ".xlsx"        => "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
        ".xltx"        => "application/vnd.openxmlformats-officedocument.spreadsheetml.template",
        # 695
        ".docx"        => "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
        ".dotx"        => "application/vnd.openxmlformats-officedocument.wordprocessingml.template",
        ".ndc"         => "application/vnd.osa.netdeploy",
        ".mgp"         => "application/vnd.osgeo.mapguide.package",
        ".dp"          => "application/vnd.osgi.dp",
        # 700
        ".esa"         => "application/vnd.osgi.subsystem",
        ".oxlicg"      => "application/vnd.oxli.countgraph",
        ".oprc"        => "application/vnd.palm",
        ".pdb"         => "application/vnd.palm",
        ".pqa"         => "application/vnd.palm",
        # 705
        ".prc"         => "application/vnd.palm",
        ".plp"         => "application/vnd.panoply",
        ".dive"        => "application/vnd.patentdive",
        ".paw"         => "application/vnd.pawaafile",
        ".str"         => "application/vnd.pg.format",
        # 710
        ".ei6"         => "application/vnd.pg.osasli",
        ".pil"         => "application/vnd.piaccess.application-license",
        ".efif"        => "application/vnd.picsel",
        ".wg"          => "application/vnd.pmi.widget",
        ".plf"         => "application/vnd.pocketlearn",
        # 715
        ".pbd"         => "application/vnd.powerbuilder6",
        ".preminet"    => "application/vnd.preminet",
        ".box"         => "application/vnd.previewsystems.box",
        ".vbox"        => "application/vnd.previewsystems.box",
        ".mgz"         => "application/vnd.proteus.magazine",
        # 720
        ".psfs"        => "application/vnd.psfs",
        ".qps"         => "application/vnd.publishare-delta-tree",
        ".ptid"        => "application/vnd.pvi.ptid1",
        ".bar"         => "application/vnd.qualcomm.brew-app-res",
        ".quiz"        => "application/vnd.quobject-quoxdocument",
        # 725
        ".quox"        => "application/vnd.quobject-quoxdocument",
        ".tree"        => "application/vnd.rainstor.data",
        ".rar"         => "application/vnd.rar",
        ".bed"         => "application/vnd.realvnc.bed",
        ".mxl"         => "application/vnd.recordare.musicxml",
        # 730
        ".cryptonote"  => "application/vnd.rig.cryptonote",
        ".cod"         => "application/vnd.rim.cod",
        ".link66"      => "application/vnd.route66.link66+xml",
        ".st"          => "application/vnd.sailingtracker.track",
        ".SAR"         => "application/vnd.sar",
        # 735
        ".scd"         => "application/vnd.scribus",
        ".sla"         => "application/vnd.scribus",
        ".slaz"        => "application/vnd.scribus",
        ".s3df"        => "application/vnd.sealed.3df",
        ".scsf"        => "application/vnd.sealed.csf",
        # 740
        ".s1w"         => "application/vnd.sealed.doc",
        ".sdo"         => "application/vnd.sealed.doc",
        ".sdoc"        => "application/vnd.sealed.doc",
        ".sem"         => "application/vnd.sealed.eml",
        ".seml"        => "application/vnd.sealed.eml",
        # 745
        ".smh"         => "application/vnd.sealed.mht",
        ".smht"        => "application/vnd.sealed.mht",
        ".s1p"         => "application/vnd.sealed.ppt",
        ".sppt"        => "application/vnd.sealed.ppt",
        ".stif"        => "application/vnd.sealed.tiff",
        # 750
        ".s1e"         => "application/vnd.sealed.xls",
        ".sxl"         => "application/vnd.sealed.xls",
        ".sxls"        => "application/vnd.sealed.xls",
        ".s1h"         => "application/vnd.sealedmedia.softseal.html",
        ".stml"        => "application/vnd.sealedmedia.softseal.html",
        # 755
        ".s1a"         => "application/vnd.sealedmedia.softseal.pdf",
        ".spd"         => "application/vnd.sealedmedia.softseal.pdf",
        ".spdf"        => "application/vnd.sealedmedia.softseal.pdf",
        ".see"         => "application/vnd.seemail",
        ".sema"        => "application/vnd.sema",
        # 760
        ".semd"        => "application/vnd.semd",
        ".semf"        => "application/vnd.semf",
        ".ssv"         => "application/vnd.shade-save-file",
        ".ifm"         => "application/vnd.shana.informed.formdata",
        ".itp"         => "application/vnd.shana.informed.formtemplate",
        # 765
        ".iif"         => "application/vnd.shana.informed.interchange",
        ".ipk"         => "application/vnd.shana.informed.package",
        ".shp"         => "application/vnd.shp",
        ".shx"         => "application/vnd.shx",
        ".sr"          => "application/vnd.sigrok.session",
        # 770
        ".mmf"         => "application/vnd.smaf",
        ".notebook"    => "application/vnd.smart.notebook",
        ".teacher"     => "application/vnd.smart.teacher",
        ".pt"          => "application/vnd.snesdev-page-table",
        ".ptrom"       => "application/vnd.snesdev-page-table",
        # 775
        ".fo"          => "application/vnd.software602.filler.form+xml",
        ".zfo"         => "application/vnd.software602.filler.form-xml-zip",
        ".sdkd"        => "application/vnd.solent.sdkm+xml",
        ".sdkm"        => "application/vnd.solent.sdkm+xml",
        ".dxp"         => "application/vnd.spotfire.dxp",
        # 780
        ".sfs"         => "application/vnd.spotfire.sfs",
        ".sqlite"      => "application/vnd.sqlite3",
        ".sqlite3"     => "application/vnd.sqlite3",
        ".sdc"         => "application/vnd.stardivision.calc",
        ".sds"         => "application/vnd.stardivision.chart",
        # 785
        ".sda"         => "application/vnd.stardivision.draw",
        ".sdd"         => "application/vnd.stardivision.impress",
        ".sdw"         => "application/vnd.stardivision.writer",
        ".sgl"         => "application/vnd.stardivision.writer-global",
        ".smzip"       => "application/vnd.stepmania.package",
        # 790
        ".sm"          => "application/vnd.stepmania.stepchart",
        ".wadl"        => "application/vnd.sun.wadl+xml",
        ".sxc"         => "application/vnd.sun.xml.calc",
        ".stc"         => "application/vnd.sun.xml.calc.template",
        ".sxd"         => "application/vnd.sun.xml.draw",
        # 795
        ".std"         => "application/vnd.sun.xml.draw.template",
        ".sxi"         => "application/vnd.sun.xml.impress",
        ".sti"         => "application/vnd.sun.xml.impress.template",
        ".sxm"         => "application/vnd.sun.xml.math",
        ".sxw"         => "application/vnd.sun.xml.writer",
        # 800
        ".sxg"         => "application/vnd.sun.xml.writer.global",
        ".stw"         => "application/vnd.sun.xml.writer.template",
        ".sus"         => "application/vnd.sus-calendar",
        ".susp"        => "application/vnd.sus-calendar",
        ".sis"         => "application/vnd.symbian.install",
        # 805
        ".xsm"         => "application/vnd.syncml+xml",
        ".bdm"         => "application/vnd.syncml.dm+wbxml",
        ".xdm"         => "application/vnd.syncml.dm+xml",
        ".ddf"         => "application/vnd.syncml.dmddf+xml",
        ".tao"         => "application/vnd.tao.intent-module-archive",
        # 810
        ".cap"         => "application/vnd.tcpdump.pcap",
        ".dmp"         => "application/vnd.tcpdump.pcap",
        ".pcap"        => "application/vnd.tcpdump.pcap",
        ".qvd"         => "application/vnd.theqvd",
        ".ppttc"       => "application/vnd.think-cell.ppttc+json",
        # 815
        ".vfr"         => "application/vnd.tml",
        ".viaframe"    => "application/vnd.tml",
        ".tmo"         => "application/vnd.tmobile-livetv",
        ".tpt"         => "application/vnd.trid.tpt",
        ".mxs"         => "application/vnd.triscape.mxs",
        # 820
        ".tra"         => "application/vnd.trueapp",
        ".frm"         => "application/vnd.ufdl",
        ".ufd"         => "application/vnd.ufdl",
        ".ufdl"        => "application/vnd.ufdl",
        ".utz"         => "application/vnd.uiq.theme",
        # 825
        ".umj"         => "application/vnd.umajin",
        ".unityweb"    => "application/vnd.unity",
        ".uo"          => "application/vnd.uoml+xml",
        ".uoml"        => "application/vnd.uoml+xml",
        ".urim"        => "application/vnd.uri-map",
        # 830
        ".urimap"      => "application/vnd.uri-map",
        ".vmt"         => "application/vnd.valve.source.material",
        ".vcx"         => "application/vnd.vcx",
        ".model-inter" => "application/vnd.vd-study",
        ".mxi"         => "application/vnd.vd-study",
        # 835
        ".study-inter" => "application/vnd.vd-study",
        ".vwx"         => "application/vnd.vectorworks",
        ".istc"        => "application/vnd.veryant.thin",
        ".isws"        => "application/vnd.veryant.thin",
        ".VES"         => "application/vnd.ves.encrypted",
        # 840
        ".vsc"         => "application/vnd.vidsoft.vidconference",
        ".vsd"         => "application/vnd.visio",
        ".vss"         => "application/vnd.visio",
        ".vst"         => "application/vnd.visio",
        ".vsw"         => "application/vnd.visio",
        # 845
        ".vis"         => "application/vnd.visionary",
        ".vsf"         => "application/vnd.vsf",
        ".sic"         => "application/vnd.wap.sic",
        ".slc"         => "application/vnd.wap.slc",
        ".wbxml"       => "application/vnd.wap.wbxml",
        # 850
        ".wmlc"        => "application/vnd.wap.wmlc",
        ".wmlsc"       => "application/vnd.wap.wmlscriptc",
        ".wtb"         => "application/vnd.webturbo",
        ".p2p"         => "application/vnd.wfa.p2p",
        ".wsc"         => "application/vnd.wfa.wsc",
        # 855
        ".wmc"         => "application/vnd.wmc",
        ".nb"          => "application/vnd.wolfram.mathematica",
        ".m"           => "application/vnd.wolfram.mathematica.package",
        ".nbp"         => "application/vnd.wolfram.player",
        ".wpd"         => "application/vnd.wordperfect",
        # 860
        ".wp5"         => "application/vnd.wordperfect5.1",
        ".wqd"         => "application/vnd.wqd",
        ".stf"         => "application/vnd.wt.stf",
        ".wv"          => "application/vnd.wv.csp+wbxml",
        ".xar"         => "application/vnd.xara",
        # 865
        ".xfd"         => "application/vnd.xfdl",
        ".xfdl"        => "application/vnd.xfdl",
        ".cpkg"        => "application/vnd.xmpie.cpkg",
        ".dpkg"        => "application/vnd.xmpie.dpkg",
        ".ppkg"        => "application/vnd.xmpie.ppkg",
        # 870
        ".xlim"        => "application/vnd.xmpie.xlim",
        ".hvd"         => "application/vnd.yamaha.hv-dic",
        ".hvs"         => "application/vnd.yamaha.hv-script",
        ".hvp"         => "application/vnd.yamaha.hv-voice",
        ".osf"         => "application/vnd.yamaha.openscoreformat",
        # 875
        ".saf"         => "application/vnd.yamaha.smaf-audio",
        ".spf"         => "application/vnd.yamaha.smaf-phrase",
        ".yme"         => "application/vnd.yaoweme",
        ".cmp"         => "application/vnd.yellowriver-custom-menu",
        ".zir"         => "application/vnd.zul",
        # 880
        ".zirz"        => "application/vnd.zul",
        ".zaz"         => "application/vnd.zzazz.deck+xml",
        ".wk"          => "application/x-123",
        ".7z"          => "application/x-7z-compressed",
        ".abw"         => "application/x-abiword",
        # 885
        ".dmg"         => "application/x-apple-diskimage",
        ".bcpio"       => "application/x-bcpio",
        ".torrent"     => "application/x-bittorrent",
        ".bz2"         => "application/x-bzip",
        ".cda"         => "application/x-cdf",
        # 890
        ".cdf"         => "application/x-cdf",
        ".vcd"         => "application/x-cdlink",
        ".mph"         => "application/x-comsol",
        ".cpio"        => "application/x-cpio",
        ".dcr"         => "application/x-director",
        # 895
        ".dir"         => "application/x-director",
        ".dxr"         => "application/x-director",
        ".wad"         => "application/x-doom",
        ".dvi"         => "application/x-dvi",
        ".gsf"         => "application/x-font",
        # 900
        ".pfa"         => "application/x-font",
        ".pfb"         => "application/x-font",
        ".pcf"         => "application/x-font-pcf",
        ".mm"          => "application/x-freemind",
        ".gan"         => "application/x-ganttproject",
        # 905
        ".gnumeric"    => "application/x-gnumeric",
        ".sgf"         => "application/x-go-sgf",
        ".gcf"         => "application/x-graphing-calculator",
        ".gtar"        => "application/x-gtar",
        ".taz"         => "application/x-gtar-compressed",
        # 910
        ".tbz"         => "application/x-gtar-compressed",
        ".tgz"         => "application/x-gtar-compressed",
        ".hdf"         => "application/x-hdf",
        ".hwp"         => "application/x-hwp",
        ".ica"         => "application/x-ica",
        # 915
        ".info"        => "application/x-info",
        ".ins"         => "application/x-internet-signup",
        ".isp"         => "application/x-internet-signup",
        ".iii"         => "application/x-iphone",
        ".iso"         => "application/x-iso9660-image",
        # 920
        ".jnlp"        => "application/x-java-jnlp-file",
        ".jmz"         => "application/x-jmol",
        ".kil"         => "application/x-killustrator",
        ".latex"       => "application/x-latex",
        ".lha"         => "application/x-lha",
        # 925
        ".lyx"         => "application/x-lyx",
        ".lzh"         => "application/x-lzh",
        ".lzx"         => "application/x-lzx",
        ".book"        => "application/x-maker",
        ".fb"          => "application/x-maker",
        # 930
        ".fbdoc"       => "application/x-maker",
        ".frame"       => "application/x-maker",
        ".maker"       => "application/x-maker",
        ".application" => "application/x-ms-application",
        ".wmd"         => "application/x-ms-wmd",
        # 935
        ".wmz"         => "application/x-ms-wmz",
        ".bat"         => "application/x-msdos-program",
        ".com"         => "application/x-msdos-program",
        ".dll"         => "application/x-msdos-program",
        ".exe"         => "application/x-msdos-program",
        # 940
        ".msi"         => "application/x-msi",
        ".nc"          => "application/x-netcdf",
        ".pac"         => "application/x-ns-proxy-autoconfig",
        ".nwc"         => "application/x-nwc",
        ".o"           => "application/x-object",
        # 945
        ".oza"         => "application/x-oz-application",
        ".p7r"         => "application/x-pkcs7-certreqresp",
        ".pyc"         => "application/x-python-code",
        ".pyo"         => "application/x-python-code",
        ".qgs"         => "application/x-qgis",
        # 950
        ".qtl"         => "application/x-quicktimeplayer",
        ".rdp"         => "application/x-rdp",
        ".rpm"         => "application/x-redhat-package-manager",
        ".rss"         => "application/x-rss+xml",
        ".rb"          => "application/x-ruby",
        # 955
        ".sci"         => "application/x-scilab",
        ".xcos"        => "application/x-scilab-xcos",
        ".shar"        => "application/x-shar",
        ".scr"         => "application/x-silverlight",
        ".sit"         => "application/x-stuffit",
        # 960
        ".sitx"        => "application/x-stuffit",
        ".sv4cpio"     => "application/x-sv4cpio",
        ".sv4crc"      => "application/x-sv4crc",
        ".tar"         => "application/x-tar",
        ".gf"          => "application/x-tex-gf",
        # 965
        ".pk"          => "application/x-tex-pk",
        ".texi"        => "application/x-texinfo",
        ".texinfo"     => "application/x-texinfo",
        ".man"         => "application/x-troff-man",
        ".me"          => "application/x-troff-me",
        # 970
        ".ms"          => "application/x-troff-ms",
        ".ustar"       => "application/x-ustar",
        ".src"         => "application/x-wais-source",
        ".wz"          => "application/x-wingz",
        ".crt"         => "application/x-x509-ca-cert",
        # 975
        ".xcf"         => "application/x-xcf",
        ".fig"         => "application/x-xfig",
        ".xpi"         => "application/x-xpinstall",
        ".xz"          => "application/x-xz",
        ".726"         => "audio/32kadpcm",
        # 980
        ".amr"         => "audio/AMR",
        ".awb"         => "audio/AMR-WB",
        ".aal"         => "audio/ATRAC-ADVANCED-LOSSLESS",
        ".atx"         => "audio/ATRAC-X",
        ".aa3"         => "audio/ATRAC3",
        # 985
        ".at3"         => "audio/ATRAC3",
        ".omg"         => "audio/ATRAC3",
        ".evc"         => "audio/EVRC",
        ".qcp"         => "audio/EVRC-QCP",
        ".evb"         => "audio/EVRCB",
        # 990
        ".enw"         => "audio/EVRCNW",
        ".evw"         => "audio/EVRCWB",
        ".l16"         => "audio/L16",
        ".smv"         => "audio/SMV",
        ".aac"         => "audio/aac",
        # 995
        ".adts"        => "audio/aac",
        ".ass"         => "audio/aac",
        ".ac3"         => "audio/ac3",
        ".axa"         => "audio/annodex",
        ".acn"         => "audio/asc",
        # 1000
        ".au"          => "audio/basic",
        ".snd"         => "audio/basic",
        ".csd"         => "audio/csound",
        ".orc"         => "audio/csound",
        ".sco"         => "audio/csound",
        # 1005
        ".dls"         => "audio/dls",
        ".flac"        => "audio/flac",
        ".lbc"         => "audio/iLBC",
        ".mhas"        => "audio/mhas",
        ".mxmf"        => "audio/mobile-xmf",
        # 1010
        ".m4a"         => "audio/mpeg",
        ".mp1"         => "audio/mpeg",
        ".mp2"         => "audio/mpeg",
        ".mp3"         => "audio/mpeg",
        ".mpega"       => "audio/mpeg",
        # 1015
        ".mpga"        => "audio/mpeg",
        ".m3u"         => "audio/mpegurl",
        ".oga"         => "audio/ogg",
        ".ogg"         => "audio/ogg",
        ".opus"        => "audio/ogg",
        # 1020
        ".spx"         => "audio/ogg",
        ".psid"        => "audio/prs.sid",
        ".sid"         => "audio/prs.sid",
        ".sofa"        => "audio/sofa",
        ".mid"         => "audio/sp-midi",
        # 1025
        ".loas"        => "audio/usac",
        ".xhe"         => "audio/usac",
        ".koz"         => "audio/vnd.audiokoz",
        ".uva"         => "audio/vnd.dece.audio",
        ".uvva"        => "audio/vnd.dece.audio",
        # 1030
        ".eol"         => "audio/vnd.digital-winds",
        ".mlp"         => "audio/vnd.dolby.mlp",
        ".dts"         => "audio/vnd.dts",
        ".dtshd"       => "audio/vnd.dts.hd",
        ".plj"         => "audio/vnd.everad.plj",
        # 1035
        ".lvp"         => "audio/vnd.lucent.voice",
        ".pya"         => "audio/vnd.ms-playready.media.pya",
        ".vbk"         => "audio/vnd.nortel.vbk",
        ".ecelp4800"   => "audio/vnd.nuera.ecelp4800",
        ".ecelp7470"   => "audio/vnd.nuera.ecelp7470",
        # 1040
        ".ecelp9600"   => "audio/vnd.nuera.ecelp9600",
        ".multitrack"  => "audio/vnd.presonus.multitrack",
        ".rip"         => "audio/vnd.rip",
        ".s1m"         => "audio/vnd.sealedmedia.softseal.mpeg",
        ".smp"         => "audio/vnd.sealedmedia.softseal.mpeg",
        # 1045
        ".smp3"        => "audio/vnd.sealedmedia.softseal.mpeg",
        ".aif"         => "audio/x-aiff",
        ".aifc"        => "audio/x-aiff",
        ".aiff"        => "audio/x-aiff",
        ".wax"         => "audio/x-ms-wax",
        # 1050
        ".wma"         => "audio/x-ms-wma",
        ".ra"          => "audio/x-realaudio",
        ".ram"         => "audio/x-realaudio",
        ".rm"          => "audio/x-realaudio",
        ".pls"         => "audio/x-scpls",
        # 1055
        ".sd2"         => "audio/x-sd2",
        ".wav"         => "audio/x-wav",
        ".alc"         => "chemical/x-alchemy",
        ".cac"         => "chemical/x-cache",
        ".cache"       => "chemical/x-cache",
        # 1060
        ".csf"         => "chemical/x-cache-csf",
        ".cascii"      => "chemical/x-cactvs-binary",
        ".cbin"        => "chemical/x-cactvs-binary",
        ".ctab"        => "chemical/x-cactvs-binary",
        ".cdx"         => "chemical/x-cdx",
        # 1065
        ".c3d"         => "chemical/x-chem3d",
        ".cmdf"        => "chemical/x-cmdf",
        ".cpa"         => "chemical/x-compass",
        ".bsd"         => "chemical/x-crossfire",
        ".csm"         => "chemical/x-csml",
        # 1070
        ".csml"        => "chemical/x-csml",
        ".ctx"         => "chemical/x-ctx",
        ".cef"         => "chemical/x-cxf",
        ".cxf"         => "chemical/x-cxf",
        ".emb"         => "chemical/x-embl-dl-nucleotide",
        # 1075
        ".embl"        => "chemical/x-embl-dl-nucleotide",
        ".spc"         => "chemical/x-galactic-spc",
        ".gam"         => "chemical/x-gamess-input",
        ".gamin"       => "chemical/x-gamess-input",
        ".inp"         => "chemical/x-gamess-input",
        # 1080
        ".fch"         => "chemical/x-gaussian-checkpoint",
        ".fchk"        => "chemical/x-gaussian-checkpoint",
        ".cub"         => "chemical/x-gaussian-cube",
        ".gau"         => "chemical/x-gaussian-input",
        ".gjc"         => "chemical/x-gaussian-input",
        # 1085
        ".gjf"         => "chemical/x-gaussian-input",
        ".gal"         => "chemical/x-gaussian-log",
        ".gcg"         => "chemical/x-gcg8-sequence",
        ".gen"         => "chemical/x-genbank",
        ".hin"         => "chemical/x-hin",
        # 1090
        ".ist"         => "chemical/x-isostar",
        ".istr"        => "chemical/x-isostar",
        ".dx"          => "chemical/x-jcamp-dx",
        ".jdx"         => "chemical/x-jcamp-dx",
        ".kin"         => "chemical/x-kinemage",
        # 1095
        ".mcm"         => "chemical/x-macmolecule",
        ".mmod"        => "chemical/x-macromodel-input",
        ".mol"         => "chemical/x-mdl-molfile",
        ".rd"          => "chemical/x-mdl-rdfile",
        ".rxn"         => "chemical/x-mdl-rxnfile",
        # 1100
        ".sd"          => "chemical/x-mdl-sdfile",
        ".tgf"         => "chemical/x-mdl-tgf",
        ".mcif"        => "chemical/x-mmcif",
        ".mol2"        => "chemical/x-mol2",
        ".b"           => "chemical/x-molconn-Z",
        # 1105
        ".gpt"         => "chemical/x-mopac-graph",
        ".mop"         => "chemical/x-mopac-input",
        ".mopcrt"      => "chemical/x-mopac-input",
        ".zmt"         => "chemical/x-mopac-input",
        ".moo"         => "chemical/x-mopac-out",
        # 1110
        ".mvb"         => "chemical/x-mopac-vib",
        ".prt"         => "chemical/x-ncbi-asn1-ascii",
        ".val"         => "chemical/x-ncbi-asn1-binary",
        ".ros"         => "chemical/x-rosdal",
        ".sw"          => "chemical/x-swissprot",
        # 1115
        ".vms"         => "chemical/x-vamas-iso14976",
        ".vmd"         => "chemical/x-vmd",
        ".xtel"        => "chemical/x-xtel",
        ".xyz"         => "chemical/x-xyz",
        ".ttc"         => "font/collection",
        # 1120
        ".otf"         => "font/otf",
        ".ttf"         => "font/ttf",
        ".woff"        => "font/woff",
        ".woff2"       => "font/woff2",
        ".exr"         => "image/aces",
        # 1125
        ".avci"        => "image/avci",
        ".avcs"        => "image/avcs",
        ".bmp"         => "image/bmp",
        ".cgm"         => "image/cgm",
        ".drle"        => "image/dicom-rle",
        # 1130
        ".emf"         => "image/emf",
        ".fit"         => "image/fits",
        ".fits"        => "image/fits",
        ".fts"         => "image/fits",
        ".gif"         => "image/gif",
        # 1135
        ".heic"        => "image/heic",
        ".heics"       => "image/heic-sequence",
        ".heif"        => "image/heif",
        ".heifs"       => "image/heif-sequence",
        ".hej2"        => "image/hej2k",
        # 1140
        ".hsj2"        => "image/hsj2",
        ".ief"         => "image/ief",
        ".jls"         => "image/jls",
        ".jp2"         => "image/jp2",
        ".jpg2"        => "image/jp2",
        # 1145
        ".jfif"        => "image/jpeg",
        ".jpe"         => "image/jpeg",
        ".jpeg"        => "image/jpeg",
        ".jpg"         => "image/jpeg",
        ".jph"         => "image/jph",
        # 1150
        ".jhc"         => "image/jphc",
        ".jphc"        => "image/jphc",
        ".jpgm"        => "image/jpm",
        ".jpm"         => "image/jpm",
        ".jpf"         => "image/jpx",
        # 1155
        ".jpx"         => "image/jpx",
        ".jxr"         => "image/jxr",
        ".jxra"        => "image/jxrA",
        ".jxrs"        => "image/jxrS",
        ".jxs"         => "image/jxs",
        # 1160
        ".jxsc"        => "image/jxsc",
        ".jxsi"        => "image/jxsi",
        ".jxss"        => "image/jxss",
        ".ktx"         => "image/ktx",
        ".ktx2"        => "image/ktx2",
        # 1165
        ".png"         => "image/png",
        ".btf"         => "image/prs.btif",
        ".btif"        => "image/prs.btif",
        ".pti"         => "image/prs.pti",
        ".svg"         => "image/svg+xml",
        # 1170
        ".svgz"        => "image/svg+xml",
        ".t38"         => "image/t38",
        ".tif"         => "image/tiff",
        ".tiff"        => "image/tiff",
        ".tfx"         => "image/tiff-fx",
        # 1175
        ".wmf"         => "image/wmf",
        ".psd"         => "image/vnd.adobe.photoshop",
        ".azv"         => "image/vnd.airzip.accelerator.azv",
        ".uvg"         => "image/vnd.dece.graphic",
        ".uvi"         => "image/vnd.dece.graphic",
        # 1180
        ".uvvg"        => "image/vnd.dece.graphic",
        ".uvvi"        => "image/vnd.dece.graphic",
        ".djv"         => "image/vnd.djvu",
        ".djvu"        => "image/vnd.djvu",
        ".dwg"         => "image/vnd.dwg",
        # 1185
        ".dxf"         => "image/vnd.dxf",
        ".fbs"         => "image/vnd.fastbidsheet",
        ".fpx"         => "image/vnd.fpx",
        ".fst"         => "image/vnd.fst",
        ".mmr"         => "image/vnd.fujixerox.edmics-mmr",
        # 1190
        ".rlc"         => "image/vnd.fujixerox.edmics-rlc",
        ".PGB"         => "image/vnd.globalgraphics.pgb",
        ".ico"         => "image/vnd.microsoft.icon",
        ".apng"        => "image/vnd.mozilla.apng",
        ".mdi"         => "image/vnd.ms-modi",
        # 1195
        ".b16"         => "image/vnd.pco.b16",
        ".hdr"         => "image/vnd.radiance",
        ".rgbe"        => "image/vnd.radiance",
        ".xyze"        => "image/vnd.radiance",
        ".s1n"         => "image/vnd.sealed.png",
        # 1200
        ".spn"         => "image/vnd.sealed.png",
        ".spng"        => "image/vnd.sealed.png",
        ".s1g"         => "image/vnd.sealedmedia.softseal.gif",
        ".sgi"         => "image/vnd.sealedmedia.softseal.gif",
        ".sgif"        => "image/vnd.sealedmedia.softseal.gif",
        # 1205
        ".s1j"         => "image/vnd.sealedmedia.softseal.jpg",
        ".sjp"         => "image/vnd.sealedmedia.softseal.jpg",
        ".sjpg"        => "image/vnd.sealedmedia.softseal.jpg",
        ".tap"         => "image/vnd.tencent.tap",
        ".vtf"         => "image/vnd.valve.source.texture",
        # 1210
        ".wbmp"        => "image/vnd.wap.wbmp",
        ".xif"         => "image/vnd.xiff",
        ".pcx"         => "image/vnd.zbrush.pcx",
        ".cr2"         => "image/x-canon-cr2",
        ".crw"         => "image/x-canon-crw",
        # 1215
        ".ras"         => "image/x-cmu-raster",
        ".cdr"         => "image/x-coreldraw",
        ".pat"         => "image/x-coreldrawpattern",
        ".cdt"         => "image/x-coreldrawtemplate",
        ".erf"         => "image/x-epson-erf",
        # 1220
        ".jng"         => "image/x-jng",
        ".nef"         => "image/x-nikon-nef",
        ".orf"         => "image/x-olympus-orf",
        ".pnm"         => "image/x-portable-anymap",
        ".pbm"         => "image/x-portable-bitmap",
        # 1225
        ".pgm"         => "image/x-portable-graymap",
        ".ppm"         => "image/x-portable-pixmap",
        ".rgb"         => "image/x-rgb",
        ".xbm"         => "image/x-xbitmap",
        ".xpm"         => "image/x-xpixmap",
        # 1230
        ".xwd"         => "image/x-xwindowdump",
        ".u8msg"       => "message/global",
        ".u8dsn"       => "message/global-delivery-status",
        ".u8mdn"       => "message/global-disposition-notification",
        ".u8hdr"       => "message/global-headers",
        # 1235
        ".art"         => "message/rfc822",
        ".eml"         => "message/rfc822",
        ".mail"        => "message/rfc822",
        ".gltf"        => "model/gltf+json",
        ".glb"         => "model/gltf-binary",
        # 1240
        ".iges"        => "model/iges",
        ".igs"         => "model/iges",
        ".mesh"        => "model/mesh",
        ".msh"         => "model/mesh",
        ".silo"        => "model/mesh",
        # 1245
        ".mtl"         => "model/mtl",
        ".obj"         => "model/obj",
        ".stl"         => "model/stl",
        ".vrml"        => "model/vrml",
        ".wrl"         => "model/vrml",
        # 1250
        ".x3db"        => "model/x3d+fastinfoset",
        ".x3dv"        => "model/x3d+vrml",
        ".x3dvz"       => "model/x3d+vrml",
        ".x3d"         => "model/x3d+xml",
        ".dae"         => "model/vnd.collada+xml",
        # 1255
        ".dwf"         => "model/vnd.dwf",
        ".dor"         => "model/vnd.gdl",
        ".gdl"         => "model/vnd.gdl",
        ".gsm"         => "model/vnd.gdl",
        ".ism"         => "model/vnd.gdl",
        # 1260
        ".lmp"         => "model/vnd.gdl",
        ".msm"         => "model/vnd.gdl",
        ".rsm"         => "model/vnd.gdl",
        ".win"         => "model/vnd.gdl",
        ".gtw"         => "model/vnd.gtw",
        # 1265
        ".moml"        => "model/vnd.moml+xml",
        ".mts"         => "model/vnd.mts",
        ".ogex"        => "model/vnd.opengex",
        ".usdz"        => "model/vnd.usdz+zip",
        ".bsp"         => "model/vnd.valve.source.compiled-map",
        # 1270
        ".vtu"         => "model/vnd.vtu",
        ".vpm"         => "multipart/voice-message",
        ".bmed"        => "multipart/vnd.bint.med-plus",
        ".appcache"    => "text/cache-manifest",
        ".manifest"    => "text/cache-manifest",
        # 1275
        ".ics"         => "text/calendar",
        ".ifb"         => "text/calendar",
        ".css"         => "text/css; charset=utf-8",
        ".csv"         => "text/csv; charset=utf-8",
        ".csvs"        => "text/csv-schema",
        # 1280
        ".soa"         => "text/dns",
        ".zone"        => "text/dns",
        ".323"         => "text/h323",
        ".htm"         => "text/html",
        ".html"        => "text/html",
        # 1285
        ".shtml"       => "text/html",
        ".uls"         => "text/iuls",
        ".cnd"         => "text/jcr-cnd",
        ".markdown"    => "text/markdown; charset=utf-8",
        ".md"          => "text/markdown; charset=utf-8",
        # 1290
        ".miz"         => "text/mizar",
        ".n3"          => "text/n3",
        ".brf"         => "text/plain; charset=utf-8",
        ".conf"        => "text/plain; charset=utf-8",
        ".log"         => "text/plain; charset=utf-8",
        # 1295
        ".pot"         => "text/plain; charset=utf-8",
        ".spec"        => "text/plain; charset=utf-8",
        ".srt"         => "text/plain; charset=utf-8",
        ".text"        => "text/plain; charset=utf-8",
        ".txt"         => "text/plain; charset=utf-8",
        # 1300
        ".provn"       => "text/provenance-notation",
        ".rst"         => "text/prs.fallenstein.rst",
        ".dsc"         => "text/prs.lines.tag",
        ".tag"         => "text/prs.lines.tag",
        ".rtx"         => "text/richtext",
        # 1305
        ".sct"         => "text/scriptlet",
        ".sgm"         => "text/sgml",
        ".sgml"        => "text/sgml",
        ".tsv"         => "text/tab-separated-values",
        ".tm"          => "text/texmacs",
        # 1310
        ".roff"        => "text/troff",
        ".t"           => "text/troff",
        ".tr"          => "text/troff",
        ".ttl"         => "text/turtle",
        ".uri"         => "text/uri-list",
        # 1315
        ".uris"        => "text/uri-list",
        ".vcard"       => "text/vcard",
        ".vcf"         => "text/vcard",
        ".vtt"         => "text/vtt",
        ".dms"         => "text/vnd.DMClientScript",
        # 1320
        ".a"           => "text/vnd.a",
        ".abc"         => "text/vnd.abc",
        ".ascii"       => "text/vnd.ascii-art",
        ".curl"        => "text/vnd.curl",
        ".copyright"   => "text/vnd.debian.copyright",
        # 1325
        ".jtd"         => "text/vnd.esmertec.theme-descriptor",
        ".flt"         => "text/vnd.ficlab.flt",
        ".fly"         => "text/vnd.fly",
        ".flx"         => "text/vnd.fmi.flexstor",
        ".dot"         => "text/vnd.graphviz",
        # 1330
        ".gv"          => "text/vnd.graphviz",
        ".hgl"         => "text/vnd.hgl",
        ".3dm"         => "text/vnd.in3d.3dml",
        ".3dml"        => "text/vnd.in3d.3dml",
        ".spo"         => "text/vnd.in3d.spot",
        # 1335
        ".spot"        => "text/vnd.in3d.spot",
        ".mpf"         => "text/vnd.ms-mediapackage",
        ".ccc"         => "text/vnd.net2phone.commcenter.command",
        ".mc2"         => "text/vnd.senx.warpscript",
        ".sos"         => "text/vnd.sosi",
        # 1340
        ".jad"         => "text/vnd.sun.j2me.app-descriptor",
        ".ts"          => "text/vnd.trolltech.linguist",
        ".si"          => "text/vnd.wap.si",
        ".sl"          => "text/vnd.wap.sl",
        ".wml"         => "text/vnd.wap.wml",
        # 1345
        ".wmls"        => "text/vnd.wap.wmlscript",
        ".bib"         => "text/x-bibtex; charset=utf-8",
        ".boo"         => "text/x-boo; charset=utf-8",
        ".h++"         => "text/x-c++hdr; charset=utf-8",
        ".hh"          => "text/x-c++hdr; charset=utf-8",
        # 1350
        ".hpp"         => "text/x-c++hdr; charset=utf-8",
        ".hxx"         => "text/x-c++hdr; charset=utf-8",
        ".c++"         => "text/x-c++src; charset=utf-8",
        ".cc"          => "text/x-c++src; charset=utf-8",
        ".cpp"         => "text/x-c++src; charset=utf-8",
        # 1355
        ".cxx"         => "text/x-c++src; charset=utf-8",
        ".h"           => "text/x-chdr; charset=utf-8",
        ".htc"         => "text/x-component",
        ".csh"         => "text/x-csh; charset=utf-8",
        ".c"           => "text/x-csrc; charset=utf-8",
        # 1360
        ".diff"        => "text/x-diff; charset=utf-8",
        ".patch"       => "text/x-diff; charset=utf-8",
        ".d"           => "text/x-dsrc; charset=utf-8",
        ".hs"          => "text/x-haskell; charset=utf-8",
        ".java"        => "text/x-java; charset=utf-8",
        # 1365
        ".ly"          => "text/x-lilypond; charset=utf-8",
        ".lhs"         => "text/x-literate-haskell; charset=utf-8",
        ".moc"         => "text/x-moc; charset=utf-8",
        ".p"           => "text/x-pascal; charset=utf-8",
        ".pas"         => "text/x-pascal; charset=utf-8",
        # 1370
        ".gcd"         => "text/x-pcs-gcd",
        ".pl"          => "text/x-perl; charset=utf-8",
        ".pm"          => "text/x-perl; charset=utf-8",
        ".py"          => "text/x-python; charset=utf-8",
        ".scala"       => "text/x-scala; charset=utf-8",
        # 1375
        ".etx"         => "text/x-setext",
        ".sfv"         => "text/x-sfv",
        ".sh"          => "text/x-sh; charset=utf-8",
        ".tcl"         => "text/x-tcl; charset=utf-8",
        ".tk"          => "text/x-tcl; charset=utf-8",
        # 1380
        ".cls"         => "text/x-tex; charset=utf-8",
        ".ltx"         => "text/x-tex; charset=utf-8",
        ".sty"         => "text/x-tex; charset=utf-8",
        ".tex"         => "text/x-tex; charset=utf-8",
        ".vcs"         => "text/x-vcalendar",
        # 1385
        ".axv"         => "video/annodex",
        ".dl"          => "video/dl",
        ".dif"         => "video/dv",
        ".dv"          => "video/dv",
        ".fli"         => "video/fli",
        # 1390
        ".gl"          => "video/gl",
        ".m4s"         => "video/iso.segment",
        ".mj2"         => "video/mj2",
        ".mjp2"        => "video/mj2",
        ".m4v"         => "video/mp4",
        # 1395
        ".mp4"         => "video/mp4",
        ".mpg4"        => "video/mp4",
        ".m1v"         => "video/mpeg",
        ".m2v"         => "video/mpeg",
        ".mpe"         => "video/mpeg",
        # 1400
        ".mpeg"        => "video/mpeg",
        ".mpg"         => "video/mpeg",
        ".ogv"         => "video/ogg",
        ".mov"         => "video/quicktime",
        ".qt"          => "video/quicktime",
        # 1405
        ".webm"        => "video/webm",
        ".uvh"         => "video/vnd.dece.hd",
        ".uvvh"        => "video/vnd.dece.hd",
        ".uvm"         => "video/vnd.dece.mobile",
        ".uvvm"        => "video/vnd.dece.mobile",
        # 1410
        ".uvu"         => "video/vnd.dece.mp4",
        ".uvvu"        => "video/vnd.dece.mp4",
        ".uvp"         => "video/vnd.dece.pd",
        ".uvvp"        => "video/vnd.dece.pd",
        ".uvs"         => "video/vnd.dece.sd",
        # 1415
        ".uvvs"        => "video/vnd.dece.sd",
        ".uvv"         => "video/vnd.dece.video",
        ".uvvv"        => "video/vnd.dece.video",
        ".dvb"         => "video/vnd.dvb.file",
        ".fvt"         => "video/vnd.fvt",
        # 1420
        ".m4u"         => "video/vnd.mpegurl",
        ".mxu"         => "video/vnd.mpegurl",
        ".pyv"         => "video/vnd.ms-playready.media.pyv",
        ".nim"         => "video/vnd.nokia.interleaved-multimedia",
        ".bik"         => "video/vnd.radgamettools.bink",
        # 1425
        ".bk2"         => "video/vnd.radgamettools.bink",
        ".smk"         => "video/vnd.radgamettools.smacker",
        ".s11"         => "video/vnd.sealed.mpeg1",
        ".smpg"        => "video/vnd.sealed.mpeg1",
        ".s14"         => "video/vnd.sealed.mpeg4",
        # 1430
        ".ssw"         => "video/vnd.sealed.swf",
        ".sswf"        => "video/vnd.sealed.swf",
        ".s1q"         => "video/vnd.sealedmedia.softseal.mov",
        ".smo"         => "video/vnd.sealedmedia.softseal.mov",
        ".smov"        => "video/vnd.sealedmedia.softseal.mov",
        # 1435
        ".viv"         => "video/vnd.vivo",
        ".yt"          => "video/vnd.youtube.yt",
        ".flv"         => "video/x-flv",
        ".lsf"         => "video/x-la-asf",
        ".lsx"         => "video/x-la-asf",
        # 1440
        ".mkv"         => "video/x-matroska",
        ".mpv"         => "video/x-matroska",
        ".mng"         => "video/x-mng",
        ".wm"          => "video/x-ms-wm",
        ".wmv"         => "video/x-ms-wmv",
        # 1445
        ".wmx"         => "video/x-ms-wmx",
        ".wvx"         => "video/x-ms-wvx",
        ".avi"         => "video/x-msvideo",
        ".movie"       => "video/x-sgi-movie",
        ".ice"         => "x-conference/x-cooltalk",
        # 1450
        ".sisx"        => "x-epoc/x-sisx-app",
        ".vrm"         => "x-world/x-vrml",
        "README"       => "text/plain; charset=utf-8",
        "Makefile"     => "text/x-makefile; charset=utf-8",
        ""             => "application/octet-stream",
        # 1455
    )
    server.document-root           = "/var/www" 
    server.upload-dirs             = ("/var/cache/lighttpd/uploads")
    server.errorlog                = "/var/log/lighttpd/error.log" 
    server.pid-file                = "/run/lighttpd.pid" 
    server.username                = "www-data" 
    server.groupname               = "www-data" 
    server.port                    = 80
    dir-listing.encoding           = "utf-8" 
    server.dir-listing             = "disable" 
    fastcgi.server                 = (
        ".php" => (
            (
                "bin-path" => "/usr/bin/php-cgi",
                "socket"   => "/tmp/php.socket",
                # 2
            ),
        ),
    )
    server.feature-flags           = (
        "server.h2proto"                   => "enable",
        "server.h2c"                       => "enable",
        "server.graceful-shutdown-timeout" => 5,
        # 3
    )
    server.http-parseopts          = (
        "header-strict"            => "enable",
        "host-strict"              => "enable",
        "host-normalize"           => "enable",
        "url-normalize-unreserved" => "enable",
        "url-normalize-required"   => "enable",
        # 5
        "url-ctrls-reject"         => "enable",
        "url-path-2f-decode"       => "enable",
        "url-path-dotseg-remove"   => "enable",
        # 8
    )
    index-file.names               = ("index.php", "index.html")
    url.access-deny                = (
        "~",
        ".inc",
        ".engine",
        ".install",
        ".module",
        ".sh",
        "sql",
        ".theme",
        ".tpl.php",
        ".xtmpl",
        "Entries",
        "Repository",
        "Root",
        # 13
    )
    static-file.exclude-extensions = (".php", ".pl", ".fcgi")
    server.modules                 = (
        "mod_indexfile",
        "mod_access",
        "mod_alias",
        "mod_accesslog",
        "mod_ssi",
        "mod_deflate",
        "mod_fastcgi",
        "mod_cgi",
        "mod_rewrite",
        "mod_redirect",
        "mod_openssl",
        # 11
    )
    ssl.engine                     = "enable" 
    ssl.pemfile                    = "/etc/letsencrypt/live/www.danmcb.com/fullchain.pem" 
    ssl.privkey                    = "/etc/letsencrypt/live/www.danmcb.com/privkey.pem" 
    server.name                    = "danmcb.com" 
    alias.url                      = (
        "/javascript" => "/usr/share/javascript",
    )
    deflate.cache-dir              = "/var/cache/lighttpd/compress/" 
    deflate.mimetypes              = ("text/plain", "text/html", "application/x-javascript", "text/css")

    $SERVER["socket"] == "[::]:80" {
        # block 1

    } # end of $SERVER["socket"] == "[::]:80" 

    $HTTP["host"] =~ "danmcb\.com$" {
        # block 2
        ssl.pemfile = "/etc/letsencrypt/live/www.danmcb.com/fullchain.pem" 
        ssl.privkey = "/etc/letsencrypt/live/www.danmcb.com/privkey.pem" 
        server.name = "www.danmcb.com" 

    } # end of $HTTP["host"] =~ "danmcb\.com$" 

    $HTTP["host"] =~ "mcbeetech\.com$" {
        # block 3
        ssl.pemfile = "/etc/letsencrypt/live/www.mcbeetech.com/fullchain.pem" 
        ssl.privkey = "/etc/letsencrypt/live/www.mcbeetech.com/privkey.pem" 
        server.name = "www.mcbeetech.com" 

    } # end of $HTTP["host"] =~ "mcbeetech\.com$" 

    $SERVER["socket"] == "0.0.0.0:443" {
        # block 4
        ssl.engine = "enable" 

    } # end of $SERVER["socket"] == "0.0.0.0:443" 

    $SERVER["socket"] == "[::]:443" {
        # block 5
        ssl.engine = "enable" 

    } # end of $SERVER["socket"] == "[::]:443" 

    $HTTP["host"] =~ "danmcb.com$" {
        # block 6
        server.document-root     = "/var/www/danmcb.com" 
        index-file.names         = ("index.html", "index.php")
        url.rewrite              = (
            "^/(.*)\.(.+)$"                                     => "$0",
            "^/(wp-admin|wp-includes|wp-content|gallery2)/(.*)" => "$0",
            "^/(.+)/?$"                                         => "/index.php/$1",
            # 3
        )
        server.error-handler-404 = "/index.php" 

    } # end of $HTTP["host"] =~ "danmcb.com$" 

    $HTTP["host"] =~ "mcbeetech.com$" {
        # block 7
        server.document-root     = "/var/www/mcbeetech.com" 
        index-file.names         = ("index.html", "index.php")
        url.rewrite              = (
            "^/(.*)\.(.+)$"                                     => "$0",
            "^/(wp-admin|wp-includes|wp-content|gallery2)/(.*)" => "$0",
            "^/(.+)/?$"                                         => "/index.php/$1",
            # 3
        )
        server.error-handler-404 = "/index.php" 

    } # end of $HTTP["host"] =~ "mcbeetech.com$" 

    $HTTP["host"] =~ "^camrosenorthjazz\.com" {
        # block 8
        url.redirect = (
            "^/(.*)" => "https://www.danmcb.com/",
        )

    } # end of $HTTP["host"] =~ "^camrosenorthjazz\.com" 

    $HTTP["host"] =~ "^www\.camrosenorthjazz\.com" {
        # block 9
        url.redirect = (
            "^/(.*)" => "https://www.danmcb.com/",
        )

    } # end of $HTTP["host"] =~ "^www\.camrosenorthjazz\.com" 

    $HTTP["host"] =~ "^mcbeeaudio\.com" {
        # block 10
        url.redirect = (
            "^/(.*)" => "https://www.danmcb.com/",
        )

    } # end of $HTTP["host"] =~ "^mcbeeaudio\.com" 

    $HTTP["host"] =~ "^www\.mcbeeaudio\.com" {
        # block 11
        url.redirect = (
            "^/(.*)" => "https://www.danmcb.com/",
        )

    } # end of $HTTP["host"] =~ "^www\.mcbeeaudio\.com" 

    $HTTP["host"] =~ "^danielmcbrearty\.com" {
        # block 12
        url.redirect = (
            "^/(.*)" => "https://www.danmcb.com/",
        )

    } # end of $HTTP["host"] =~ "^danielmcbrearty\.com" 

    $HTTP["host"] =~ "^www\.danielmcbrearty\.com" {
        # block 13
        url.redirect = (
            "^/(.*)" => "https://www.danmcb.com/",
        )

    } # end of $HTTP["host"] =~ "^www\.danielmcbrearty\.com" 

    $HTTP["scheme"] == "http" {
        # block 14
        url.redirect      = (
            "" => "https://${url.authority}${url.path}${qsa}",
        )
        url.redirect-code = 308

    } # end of $HTTP["scheme"] == "http" 
}

RE: probem with http to https redirect (connection reset ...) - Added by danmcb over 1 year ago

Re my choice of Debian - OK, they are not so quick to update. The version I am using is their latest. Other than building from source, it will be hard for me to do much about that. But do you think that is the root of this issue? I doubt it personally.

RE: probem with http to https redirect (connection reset ...) - Added by gstrauss over 1 year ago

Re my choice of Debian - OK, they are not so quick to update. The version I am using is their latest. Other than building from source, it will be hard for me to do much about that. But do you think that is the root of this issue? I doubt it personally.

I highlighted that only because you described your system with "everything is at latest version AFAIK" and I wanted you to understand that might be the "latest" available in the stable version of Debian, but that the stable version of Debian is not updated (and so "not maintained") other than for serious security bugs.

If there was an issue in lighttpd, it is likely fixed in a later version of lighttpd. There are no outstanding known bugs in lighttpd.


lighttpd -tt -f /etc/lighttpd/lighttpd.conf gives no output - I assume that this means no error.

To be precise, an exit value of 0 is no error. Still, if there was a non-zero exit value, then lighttpd would also have issue trace, too, so the config preflight with -tt was successful.

With the config you shared, nothing jumps out at me as a problem relating to redirection, so I would suggest testing with smaller portions of the config enabled. Try temporarily disabling mod_deflate to see if that has an effect. Try a simpler config with the http to https redirect to see piece is working.

You can also enable some Config: Debug Variables in your lighttpd.conf, e.g. debug.log-request-header = "enable" and debug.log-response-header = "enable" and then review the lighttpd error log (where the debug trace goes) when you make a request from Firefox.

RE: probem with http to https redirect (connection reset ...) - Added by danmcb over 1 year ago

ok, thank you for your response. I take your point about debian.

I've tried disabling various parts of the config, without being able to resolve the issue.

WHat I did discover when I enabled some debugging was this (when an error occurs):

2022-11-02 01:02:06: server.c.1513) server started (lighttpd/1.4.59)
2022-11-02 01:02:23: configfile-glue.c.646) === start of condition block ===
2022-11-02 01:02:23: configfile-glue.c.491) 3 global / $HTTP["host"] =~ "danmcb\.com$" not available yet
2022-11-02 01:02:23: configfile-glue.c.350) 2 (uncached) result: unset (cond: global / $HTTP["host"] =~ "danmcb\.com$")
2022-11-02 01:02:23: configfile-glue.c.646) === start of condition block ===
2022-11-02 01:02:23: configfile-glue.c.491) 3 global / $HTTP["host"] =~ "mcbeetech\.com$" not available yet
2022-11-02 01:02:23: configfile-glue.c.350) 3 (uncached) result: unset (cond: global / $HTTP["host"] =~ "mcbeetech\.com$")
2022-11-02 01:02:23: mod_openssl.c.3095) SSL: 1 error:1408F09C:SSL routines:ssl3_get_record:http request

It looks a bit as if (and I don't know your code but I do write embedded software for a living) - for some reason - the tests against the incoming request are happening too early in the whole request/response process - only with the http request. Also I wondered if the redirect needs to be sooner, so I moved the import of 10-ssl.conf to the end of the main config, and also moved the http=>https redirect so that it happens before any other tests. But no luck.

What I also find odd is that on a "bad" request I don't even SEE the test for $HTTP["scheme"] == "http" get evaulated, even when the test is moved up the file (I have no idea if the tests are sensitive to the order in whoch they are declared - just trying to fix the issue here).

Contrast this with a "good" request for an https page:

2022-11-02 01:40:21: configfile-glue.c.646) === start of condition block ===
2022-11-02 01:40:21: configfile-glue.c.491) 3 global / $HTTP["host"] =~ "danmcb\.com$" not available yet
2022-11-02 01:40:21: configfile-glue.c.350) 6 (uncached) result: unset (cond: global / $HTTP["host"] =~ "danmcb\.com$")
2022-11-02 01:40:21: configfile-glue.c.646) === start of condition block ===
2022-11-02 01:40:21: configfile-glue.c.491) 3 global / $HTTP["host"] =~ "mcbeetech\.com$" not available yet
2022-11-02 01:40:21: configfile-glue.c.350) 7 (uncached) result: unset (cond: global / $HTTP["host"] =~ "mcbeetech\.com$")
2022-11-02 01:40:21: configfile-glue.c.646) === start of condition block ===
2022-11-02 01:40:21: configfile-glue.c.611) $HTTP["host"] =~ "danmcb\.com$" compare to www.danmcb.com
2022-11-02 01:40:21: configfile-glue.c.350) 6 (uncached) result: true (cond: global / $HTTP["host"] =~ "danmcb\.com$")
2022-11-02 01:40:21: configfile-glue.c.646) === start of condition block ===
2022-11-02 01:40:21: configfile-glue.c.611) $HTTP["host"] =~ "mcbeetech\.com$" compare to www.danmcb.com
2022-11-02 01:40:21: configfile-glue.c.350) 7 (uncached) result: false (cond: global / $HTTP["host"] =~ "mcbeetech\.com$")
2022-11-02 01:40:22: response.c.339) run condition
2022-11-02 01:40:22: configfile-glue.c.646) === start of condition block ===
2022-11-02 01:40:22: configfile-glue.c.611) $HTTP["host"] =~ "danmcb.com$" compare to www.danmcb.com
2022-11-02 01:40:22: configfile-glue.c.350) 4 (uncached) result: true (cond: global / $HTTP["host"] =~ "danmcb.com$")
2022-11-02 01:40:22: configfile-glue.c.646) === start of condition block ===
2022-11-02 01:40:22: configfile-glue.c.611) $HTTP["host"] =~ "mcbeetech.com$" compare to www.danmcb.com
2022-11-02 01:40:22: configfile-glue.c.350) 5 (uncached) result: false (cond: global / $HTTP["host"] =~ "mcbeetech.com$")
2022-11-02 01:40:22: configfile-glue.c.646) === start of condition block ===
2022-11-02 01:40:22: configfile-glue.c.611) $HTTP["host"] =~ "danmcb\.com$" compare to www.danmcb.com
2022-11-02 01:40:22: configfile-glue.c.350) 6 (uncached) result: true (cond: global / $HTTP["host"] =~ "danmcb\.com$")
2022-11-02 01:40:22: configfile-glue.c.646) === start of condition block ===
2022-11-02 01:40:22: configfile-glue.c.611) $HTTP["host"] =~ "mcbeetech\.com$" compare to www.danmcb.com
2022-11-02 01:40:22: configfile-glue.c.350) 7 (uncached) result: false (cond: global / $HTTP["host"] =~ "mcbeetech\.com$")
2022-11-02 01:40:22: response.c.398) -- parsed Request-URI
2022-11-02 01:40:22: response.c.400) Request-URI     : /
2022-11-02 01:40:22: response.c.402) URI-scheme      : https
2022-11-02 01:40:22: response.c.404) URI-authority   : www.danmcb.com
2022-11-02 01:40:22: response.c.406) URI-path (clean): /
2022-11-02 01:40:22: response.c.408) URI-query       :
2022-11-02 01:40:22: mod_access.c.139) -- mod_access_uri_handler called
2022-11-02 01:40:22: configfile-glue.c.646) === start of condition block ===
2022-11-02 01:40:22: configfile-glue.c.448) go parent global / $HTTP["scheme"] == "http" 
2022-11-02 01:40:22: configfile-glue.c.611) $HTTP["scheme"] == "http" compare to https
2022-11-02 01:40:22: configfile-glue.c.350) 2 (uncached) result: false (cond: global / $HTTP["scheme"] == "http")
2022-11-02 01:40:22: configfile-glue.c.350) 3 (uncached) result: skipped (cond: global / $HTTP["scheme"] == "http" / $HTTP["host"] =~ ".*")
2022-11-02 01:40:22: response.c.519) -- before doc_root

Here we start with the same "not available yet" stuff, but the ssl handler does not trip up at line 3095 of mod_openssl.c ... whatever happens there ...

I don't know enough about the internals of your server but it does look to me as if something is amiss here. I don't unfortunately, have time or resources to dig in and find out what.

RE: probem with http to https redirect (connection reset ...) - Added by gstrauss over 1 year ago

Please use the debug directives I provided earlier and share your test request and response headers.
What commands are you using on your client? To which port are you connecting?

Newer versions of lighttpd report more clearly the error in the error log when an HTTP (clear-text) request is made to an HTTPS (encrypted) port. Is that what you're trying to do? Or are you trying to have connections to port 80 (conventional HTTP clear-text) redirected to port 443 (conventional HTTPS encrypted)? The second works. The first is an error and TLS negotiation fails with the clear-text request which is an invalid TLS ClientHello.

BTW, if your client provides the TLS SNI (server name indication) extension in the TLS ClientHello, then some of those config conditions are resolvable during mod_openssl processing. If not, then those are not available yet.

RE: probem with http to https redirect (connection reset ...) - Added by danmcb over 1 year ago

I am simply testing by asking for

http://www.danmcb.com

in Firefox. I am not manipulating or trying to do anything odd with ports. I haven't checked but I would be very surprised of Firefox is doing an http req on port 443!

(My .conf file has server.port = 80, I suppose that the ssl module is smart enough to listen on 443 - must be as I have no issue at all with https requests.)

RE: probem with http to https redirect (connection reset ...) - Added by danmcb over 1 year ago

In the case that I make an http request as described in my last post - no info about request or response headers is output. The request seeems to fail on the line:

2022-11-02 01:02:23: mod_openssl.c.3095) SSL: 1 error:1408F09C:SSL routines:ssl3_get_record:http request

the 8 line snippet I posted above which ends in this error repeats a number of times (probably the browser retrying) and that is it.

RE: probem with http to https redirect (connection reset ...) - Added by gstrauss over 1 year ago

ssl3_get_record:http request is an openssl error message and looks to me like an HTTP request was made on an HTTPS port.

The following was added to lighttpd 1.4.60, released Oct 2021, over a year ago. Again, the latest version of lighttpd is lighttpd 1.4.67.
https://git.lighttpd.net/lighttpd/lighttpd1.4/commit/75e9b2857a07fae38ac8f0686faa6785e35d9672

It is often a waste of everyone's time to troubleshoot things over and over which have been fixed or improved many months or years ago. In this case, the error message was improved over a year ago for behavior that has always been a client mistake: sending clear-text is invalid on an encrypted port expecting TLS ClientHello for TLS negotiation.

RE: probem with http to https redirect (connection reset ...) - Added by gstrauss over 1 year ago

You have ssl.engine = "enable" in the global scope in your config, which enables TLS in the global scope. If that global scope is your default listening port, e.g. server.port = 80, then you have enabled TLS on port 80.

RE: [Solved] probem with http to https redirect (connection reset ...) - Added by gstrauss over 1 year ago

I think you might want something like the following, which works in lighttpd 1.4.67, but I have not tested with lighttpd 1.4.59.

ssl.engine = "enable" 
server.port = 443
$SERVER["socket"] == ":80"     { ssl.engine = "disable" }
$SERVER["socket"] == "[::]:80" { ssl.engine = "disable" }

I think you would have tracked down the issue sooner if you were running lighttpd 1.4.60 or later with the error message added by lighttpd (instead of the more opaque openssl error string).

RE: [Solved] probem with http to https redirect (connection reset ...) - Added by danmcb over 1 year ago

Thank you! Had to be something stupid. I wonder where I got that.

In fact just deleting that line solves the issue, as the "enable" is repeated inside the ssl block a few lines later. The redirect woerks now.

Thanks again for your time.

RE: [Solved] probem with http to https redirect (connection reset ...) - Added by danmcb over 1 year ago

"I think you would have tracked down the issue sooner if you were running lighttpd 1.4.60 or later with the error message added by lighttpd (instead of the more opaque openssl error string)."

That might well be so. But the reality is I use the distro provided version. I didn't realise that debian was that far behind, I could use "testing" I suppose. But the real issue was my basic error in the file ... not lighty at all.

RE: [Solved] probem with http to https redirect (connection reset ...) - Added by danmcb over 1 year ago

thanks again for your time in helping me to get this fixed. I made a small donation by way of a thank you.

    (1-14/14)