[Solved] probem with http to https redirect (connection reset ...)
Added by danmcb about 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 about 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 about 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 about 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 about 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 about 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 about 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 about 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 about 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 about 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 about 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 about 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 about 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 about 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 about 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.