win上host的配置C:\Windows\System32\drivers\etc
# Copyright (c) 1993-2009 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
# 102.54.94.97 rhino.acme.com # source server
# 38.25.63.10 x.acme.com # x client host
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
127.0.0.1 aa.com
127.0.0.1 bb.com
127.0.0.1 cc.com
127.0.0.1 c2.com
127.0.0.1 www.aa.com
127.0.0.1 www.bb.com
127.0.0.1 www.cc.com
127.0.0.1 www.c2.com
nodejs用的绑定域名实例
var http = require ( 'http' ) , httpProxy = require ( 'http-proxy' ) ;
var proxy = httpProxy. createProxyServer ( { } ) ;
proxy. on ( 'error' , function ( err, req, res ) {
res. writeHead ( 500 , {
'Content-Type' : 'text/plain'
} ) ;
res. end ( 'Something went wrong. And we are reporting a custom error message.' ) ;
} ) ;
var server = require ( 'http' ) . createServer ( function ( req, res ) {
var host = req. headers. host, ip = req. headers[ 'x-forwarded-for' ] || req. connection. remoteAddress;
console. log ( "client ip:" + ip + ", host:" + host) ;
switch ( host) {
case 'aa.com' :
case 'localhost' :
case '127.0.0.1:88' :
case 'www.aa.com' :
proxy. web ( req, res, { target : 'http://127.0.0.1:5500' } ) ;
break ;
case 'bb.com' :
proxy. web ( req, res, { target : 'http://xyd.bbbbb.com:8080' } ) ;
break ;
case 'cc.com' :
case 'www.cc.com' :
proxy. web ( req, res, { target : 'http://localhost:81' } ) ;
break ;
case 'eeeeee.com.cn' :
case 'www.eeee.com.cn' :
proxy. web ( req, res, { target : 'http://eeeee.com.cn:8082' } ) ;
break ;
case 'asaicc.com' :
case 'www.asaicc.com' :
if ( req. url. indexOf ( '/grand' ) != - 1 ) {
proxy. web ( req, res, { target : 'http://127.0.0.1:8081' } ) ;
} else {
res. writeHead ( 302 , {
'Location' : 'http://asaicc.com/grand/'
} ) ;
res. end ( ) ;
}
break ;
default :
res. writeHead ( 200 , {
'Content-Type' : 'text/plain'
} ) ;
res. end ( 'Welcome to my server!' ) ;
}
} ) ;
console. log ( "listening on port 80" )
server. listen ( 80 ) ;
nodejs静态服务器代码示例
const http = require ( 'http' ) ;
const fs = require ( 'fs' ) ;
const path = require ( 'path' ) ;
const url = require ( 'url' ) ;
const resMime = require ( './resMime.js' ) ;
const config = {
port : 8888 ,
webRoot : require ( 'os' ) . type ( ) == 'Darwin' ? './' : './'
} ;
const server = http. createServer ( ( req, res ) => {
let pathName = url. parse ( req. url) . pathname;
if ( pathName == '/' )
pathName = '/index.html' ;
if ( pathName == '/favicon.ico' )
res. end ( ) ;
else {
let extName = path. extname ( pathName) ;
fs. readFile ( path. join ( config. webRoot || __dirname, pathName) , function ( err, data ) {
if ( err) {
console. log ( err) ;
res. writeHead ( 404 , { "Content-Type" : "text/html;chartset='utf8'" } )
res. write ( "Not found" ) ;
res. end ( ) ;
} else {
var mime = resMime. getMime ( fs, extName) ;
res. writeHead ( 200 , { "Content-Type" : ` ${ mime} ;chartset='utf8' ` } ) ;
res. write ( data) ;
res. end ( ) ;
}
} ) ;
}
} ) ;
server. listen ( config. port) ;
console. log ( 'Server ready' ) ;
nodejs的mime标准
const Mimes = {
".323" : "text/h323" ,
".3gp" : "video/3gpp" ,
".aab" : "application/x-authoware-bin" ,
".aam" : "application/x-authoware-map" ,
".aas" : "application/x-authoware-seg" ,
".acx" : "application/internet-property-stream" ,
".ai" : "application/postscript" ,
".aif" : "audio/x-aiff" ,
".aifc" : "audio/x-aiff" ,
".aiff" : "audio/x-aiff" ,
".als" : "audio/X-Alpha5" ,
".amc" : "application/x-mpeg" ,
".ani" : "application/octet-stream" ,
".apk" : "application/vnd.android.package-archive" ,
".asc" : "text/plain" ,
".asd" : "application/astound" ,
".asf" : "video/x-ms-asf" ,
".asn" : "application/astound" ,
".asp" : "application/x-asap" ,
".asr" : "video/x-ms-asf" ,
".asx" : "video/x-ms-asf" ,
".au" : "audio/basic" ,
".avb" : "application/octet-stream" ,
".avi" : "video/x-msvideo" ,
".awb" : "audio/amr-wb" ,
".axs" : "application/olescript" ,
".bas" : "text/plain" ,
".bcpio" : "application/x-bcpio" ,
".bin " : "application/octet-stream" ,
".bld" : "application/bld" ,
".bld2" : "application/bld2" ,
".bmp" : "image/bmp" ,
".bpk" : "application/octet-stream" ,
".bz2" : "application/x-bzip2" ,
".c" : "text/plain" ,
".cal" : "image/x-cals" ,
".cat" : "application/vnd.ms-pkiseccat" ,
".ccn" : "application/x-cnc" ,
".cco" : "application/x-cocoa" ,
".cdf" : "application/x-cdf" ,
".cer" : "application/x-x509-ca-cert" ,
".cgi" : "magnus-internal/cgi" ,
".chat" : "application/x-chat" ,
".class" : "application/octet-stream" ,
".clp" : "application/x-msclip" ,
".cmx" : "image/x-cmx" ,
".co" : "application/x-cult3d-object" ,
".cod" : "image/cis-cod" ,
".conf" : "text/plain" ,
".cpio" : "application/x-cpio" ,
".cpp" : "text/plain" ,
".cpt" : "application/mac-compactpro" ,
".crd" : "application/x-mscardfile" ,
".crl" : "application/pkix-crl" ,
".crt" : "application/x-x509-ca-cert" ,
".csh" : "application/x-csh" ,
".csm" : "chemical/x-csml" ,
".csml" : "chemical/x-csml" ,
".css" : "text/css" ,
".cur" : "application/octet-stream" ,
".dcm" : "x-lml/x-evm" ,
".dcr" : "application/x-director" ,
".dcx" : "image/x-dcx" ,
".der" : "application/x-x509-ca-cert" ,
".dhtml" : "text/html" ,
".dir" : "application/x-director" ,
".dll" : "application/x-msdownload" ,
".dmg" : "application/octet-stream" ,
".dms" : "application/octet-stream" ,
".doc" : "application/msword" ,
".docx" : "application/vnd.openxmlformats-officedocument.wordprocessingml.document" ,
".dot" : "application/msword" ,
".dvi" : "application/x-dvi" ,
".dwf" : "drawing/x-dwf" ,
".dwg" : "application/x-autocad" ,
".dxf" : "application/x-autocad" ,
".dxr" : "application/x-director" ,
".ebk" : "application/x-expandedbook" ,
".emb" : "chemical/x-embl-dl-nucleotide" ,
".embl" : "chemical/x-embl-dl-nucleotide" ,
".eps" : "application/postscript" ,
".epub" : "application/epub+zip" ,
".eri" : "image/x-eri" ,
".es" : "audio/echospeech" ,
".esl" : "audio/echospeech" ,
".etc" : "application/x-earthtime" ,
".etx" : "text/x-setext" ,
".evm" : "x-lml/x-evm" ,
".evy" : "application/envoy" ,
".exe" : "application/octet-stream" ,
".fh4" : "image/x-freehand" ,
".fh5" : "image/x-freehand" ,
".fhc" : "image/x-freehand" ,
".fif" : "application/fractals" ,
".flr" : "x-world/x-vrml" ,
".flv" : "flv-application/octet-stream" ,
".fm" : "application/x-maker" ,
".fpx" : "image/x-fpx" ,
".fvi" : "video/isivideo" ,
".gau" : "chemical/x-gaussian-input" ,
".gca" : "application/x-gca-compressed" ,
".gdb" : "x-lml/x-gdb" ,
".gif" : "image/gif" ,
".gps" : "application/x-gps" ,
".gtar" : "application/x-gtar" ,
".gz" : "application/x-gzip" ,
".h" : "text/plain" ,
".hdf" : "application/x-hdf" ,
".hdm" : "text/x-hdml" ,
".hdml" : "text/x-hdml" ,
".hlp" : "application/winhlp" ,
".hqx" : "application/mac-binhex40" ,
".hta" : "application/hta" ,
".htc" : "text/x-component" ,
".htm" : "text/html" ,
".html" : "text/html" ,
".hts" : "text/html" ,
".htt" : "text/webviewhtml" ,
".ice" : "x-conference/x-cooltalk" ,
".ico" : "image/x-icon" ,
".ief" : "image/ief" ,
".ifm" : "image/gif" ,
".ifs" : "image/ifs" ,
".iii" : "application/x-iphone" ,
".imy" : "audio/melody" ,
".ins" : "application/x-internet-signup" ,
".ips" : "application/x-ipscript" ,
".ipx" : "application/x-ipix" ,
".isp" : "application/x-internet-signup" ,
".it" : "audio/x-mod" ,
".itz" : "audio/x-mod" ,
".ivr" : "i-world/i-vrml" ,
".j2k" : "image/j2k" ,
".jad" : "text/vnd.sun.j2me.app-descriptor" ,
".jam" : "application/x-jam" ,
".jar" : "application/java-archive" ,
".java" : "text/plain" ,
".jfif" : "image/pipeg" ,
".jnlp" : "application/x-java-jnlp-file" ,
".jpe" : "image/jpeg" ,
".jpeg" : "image/jpeg" ,
".jpg" : "image/jpeg" ,
".jpz" : "image/jpeg" ,
".js" : "application/x-javascript" ,
".jwc" : "application/jwc" ,
".kjx" : "application/x-kjx" ,
".lak" : "x-lml/x-lak" ,
".latex" : "application/x-latex" ,
".lcc" : "application/fastman" ,
".lcl" : "application/x-digitalloca" ,
".lcr" : "application/x-digitalloca" ,
".lgh" : "application/lgh" ,
".lha" : "application/octet-stream" ,
".lml" : "x-lml/x-lml" ,
".lmlpack" : "x-lml/x-lmlpack" ,
".log" : "text/plain" ,
".lsf" : "video/x-la-asf" ,
".lsx" : "video/x-la-asf" ,
".lzh" : "application/octet-stream" ,
".m13" : "application/x-msmediaview" ,
".m14" : "application/x-msmediaview" ,
".m15" : "audio/x-mod" ,
".m3u" : "audio/x-mpegurl" ,
".m3url" : "audio/x-mpegurl" ,
".m4a" : "audio/mp4a-latm" ,
".m4b" : "audio/mp4a-latm" ,
".m4p" : "audio/mp4a-latm" ,
".m4u" : "video/vnd.mpegurl" ,
".m4v" : "video/x-m4v" ,
".ma1" : "audio/ma1" ,
".ma2" : "audio/ma2" ,
".ma3" : "audio/ma3" ,
".ma5" : "audio/ma5" ,
".man" : "application/x-troff-man" ,
".map" : "magnus-internal/imagemap" ,
".mbd" : "application/mbedlet" ,
".mct" : "application/x-mascot" ,
".mdb" : "application/x-msaccess" ,
".mdz" : "audio/x-mod" ,
".me" : "application/x-troff-me" ,
".mel" : "text/x-vmel" ,
".mht" : "message/rfc822" ,
".mhtml" : "message/rfc822" ,
".mi" : "application/x-mif" ,
".mid" : "audio/mid" ,
".midi" : "audio/midi" ,
".mif" : "application/x-mif" ,
".mil" : "image/x-cals" ,
".mio" : "audio/x-mio" ,
".mmf" : "application/x-skt-lbs" ,
".mng" : "video/x-mng" ,
".mny" : "application/x-msmoney" ,
".moc" : "application/x-mocha" ,
".mocha" : "application/x-mocha" ,
".mod" : "audio/x-mod" ,
".mof" : "application/x-yumekara" ,
".mol" : "chemical/x-mdl-molfile" ,
".mop" : "chemical/x-mopac-input" ,
".mov" : "video/quicktime" ,
".movie" : "video/x-sgi-movie" ,
".mp2" : "video/mpeg" ,
".mp3" : "audio/mpeg" ,
".mp4" : "video/mp4" ,
".mpa" : "video/mpeg" ,
".mpc" : "application/vnd.mpohun.certificate" ,
".mpe" : "video/mpeg" ,
".mpeg" : "video/mpeg" ,
".mpg" : "video/mpeg" ,
".mpg4" : "video/mp4" ,
".mpga" : "audio/mpeg" ,
".mpn" : "application/vnd.mophun.application" ,
".mpp" : "application/vnd.ms-project" ,
".mps" : "application/x-mapserver" ,
".mpv2" : "video/mpeg" ,
".mrl" : "text/x-mrml" ,
".mrm" : "application/x-mrm" ,
".ms" : "application/x-troff-ms" ,
".msg" : "application/vnd.ms-outlook" ,
".mts" : "application/metastream" ,
".mtx" : "application/metastream" ,
".mtz" : "application/metastream" ,
".mvb" : "application/x-msmediaview" ,
".mzv" : "application/metastream" ,
".nar" : "application/zip" ,
".nbmp" : "image/nbmp" ,
".nc" : "application/x-netcdf" ,
".ndb" : "x-lml/x-ndb" ,
".ndwn" : "application/ndwn" ,
".nif" : "application/x-nif" ,
".nmz" : "application/x-scream" ,
".nokia-op-logo" : "image/vnd.nok-oplogo-color" ,
".npx" : "application/x-netfpx" ,
".nsnd" : "audio/nsnd" ,
".nva" : "application/x-neva1" ,
".nws" : "message/rfc822" ,
".oda" : "application/oda" ,
".ogg" : "audio/ogg" ,
".oom" : "application/x-AtlasMate-Plugin" ,
".p10" : "application/pkcs10" ,
".p12" : "application/x-pkcs12" ,
".p7b" : "application/x-pkcs7-certificates" ,
".p7c" : "application/x-pkcs7-mime" ,
".p7m" : "application/x-pkcs7-mime" ,
".p7r" : "application/x-pkcs7-certreqresp" ,
".p7s" : "application/x-pkcs7-signature" ,
".pac" : "audio/x-pac" ,
".pae" : "audio/x-epac" ,
".pan" : "application/x-pan" ,
".pbm" : "image/x-portable-bitmap" ,
".pcx" : "image/x-pcx" ,
".pda" : "image/x-pda" ,
".pdb" : "chemical/x-pdb" ,
".pdf" : "application/pdf" ,
".pfr" : "application/font-tdpfr" ,
".pfx" : "application/x-pkcs12" ,
".pgm" : "image/x-portable-graymap" ,
".pict" : "image/x-pict" ,
".pko" : "application/ynd.ms-pkipko" ,
".pm" : "application/x-perl" ,
".pma" : "application/x-perfmon" ,
".pmc" : "application/x-perfmon" ,
".pmd" : "application/x-pmd" ,
".pml" : "application/x-perfmon" ,
".pmr" : "application/x-perfmon" ,
".pmw" : "application/x-perfmon" ,
".png" : "image/png" ,
".pnm" : "image/x-portable-anymap" ,
".pnz" : "image/png" ,
".pot," : "application/vnd.ms-powerpoint" ,
".ppm" : "image/x-portable-pixmap" ,
".pps" : "application/vnd.ms-powerpoint" ,
".ppt" : "application/vnd.ms-powerpoint" ,
".pptx" : "application/vnd.openxmlformats-officedocument.presentationml.presentation" ,
".pqf" : "application/x-cprplayer" ,
".pqi" : "application/cprplayer" ,
".prc" : "application/x-prc" ,
".prf" : "application/pics-rules" ,
".prop" : "text/plain" ,
".proxy" : "application/x-ns-proxy-autoconfig" ,
".ps" : "application/postscript" ,
".ptlk" : "application/listenup" ,
".pub" : "application/x-mspublisher" ,
".pvx" : "video/x-pv-pvx" ,
".qcp" : "audio/vnd.qcelp" ,
".qt" : "video/quicktime" ,
".qti" : "image/x-quicktime" ,
".qtif" : "image/x-quicktime" ,
".r3t" : "text/vnd.rn-realtext3d" ,
".ra" : "audio/x-pn-realaudio" ,
".ram" : "audio/x-pn-realaudio" ,
".rar" : "application/octet-stream" ,
".ras" : "image/x-cmu-raster" ,
".rc" : "text/plain" ,
".rdf" : "application/rdf+xml" ,
".rf" : "image/vnd.rn-realflash" ,
".rgb" : "image/x-rgb" ,
".rlf" : "application/x-richlink" ,
".rm" : "audio/x-pn-realaudio" ,
".rmf" : "audio/x-rmf" ,
".rmi" : "audio/mid" ,
".rmm" : "audio/x-pn-realaudio" ,
".rmvb" : "audio/x-pn-realaudio" ,
".rnx" : "application/vnd.rn-realplayer" ,
".roff" : "application/x-troff" ,
".rp" : "image/vnd.rn-realpix" ,
".rpm" : "audio/x-pn-realaudio-plugin" ,
".rt" : "text/vnd.rn-realtext" ,
".rte" : "x-lml/x-gps" ,
".rtf" : "application/rtf" ,
".rtg" : "application/metastream" ,
".rtx" : "text/richtext" ,
".rv" : "video/vnd.rn-realvideo" ,
".rwc" : "application/x-rogerwilco" ,
".s3m" : "audio/x-mod" ,
".s3z" : "audio/x-mod" ,
".sca" : "application/x-supercard" ,
".scd" : "application/x-msschedule" ,
".sct" : "text/scriptlet" ,
".sdf" : "application/e-score" ,
".sea" : "application/x-stuffit" ,
".setpay" : "application/set-payment-initiation" ,
".setreg" : "application/set-registration-initiation" ,
".sgm" : "text/x-sgml" ,
".sgml" : "text/x-sgml" ,
".sh" : "application/x-sh" ,
".shar" : "application/x-shar" ,
".shtml" : "magnus-internal/parsed-html" ,
".shw" : "application/presentations" ,
".si6" : "image/si6" ,
".si7" : "image/vnd.stiwap.sis" ,
".si9" : "image/vnd.lgtwap.sis" ,
".sis" : "application/vnd.symbian.install" ,
".sit" : "application/x-stuffit" ,
".skd" : "application/x-Koan" ,
".skm" : "application/x-Koan" ,
".skp" : "application/x-Koan" ,
".skt" : "application/x-Koan" ,
".slc" : "application/x-salsa" ,
".smd" : "audio/x-smd" ,
".smi" : "application/smil" ,
".smil" : "application/smil" ,
".smp" : "application/studiom" ,
".smz" : "audio/x-smd" ,
".snd" : "audio/basic" ,
".spc" : "application/x-pkcs7-certificates" ,
".spl" : "application/futuresplash" ,
".spr" : "application/x-sprite" ,
".sprite" : "application/x-sprite" ,
".sdp" : "application/sdp" ,
".spt" : "application/x-spt" ,
".src" : "application/x-wais-source" ,
".sst" : "application/vnd.ms-pkicertstore" ,
".stk" : "application/hyperstudio" ,
".stl" : "application/vnd.ms-pkistl" ,
".stm" : "text/html" ,
".svg" : "image/svg+xml" ,
".sv4cpio" : "application/x-sv4cpio" ,
".sv4crc" : "application/x-sv4crc" ,
".svf" : "image/vnd" ,
".svg" : "image/svg+xml" ,
".svh" : "image/svh" ,
".svr" : "x-world/x-svr" ,
".swf" : "application/x-shockwave-flash" ,
".swfl" : "application/x-shockwave-flash" ,
".t" : "application/x-troff" ,
".tad" : "application/octet-stream" ,
".talk" : "text/x-speech" ,
".tar" : "application/x-tar" ,
".taz" : "application/x-tar" ,
".tbp" : "application/x-timbuktu" ,
".tbt" : "application/x-timbuktu" ,
".tcl" : "application/x-tcl" ,
".tex" : "application/x-tex" ,
".texi" : "application/x-texinfo" ,
".texinfo" : "application/x-texinfo" ,
".tgz" : "application/x-compressed" ,
".thm" : "application/vnd.eri.thm" ,
".tif" : "image/tiff" ,
".tiff" : "image/tiff" ,
".tki" : "application/x-tkined" ,
".tkined" : "application/x-tkined" ,
".toc" : "application/toc" ,
".toy" : "image/toy" ,
".tr" : "application/x-troff" ,
".trk" : "x-lml/x-gps" ,
".trm" : "application/x-msterminal" ,
".tsi" : "audio/tsplayer" ,
".tsp" : "application/dsptype" ,
".tsv" : "text/tab-separated-values" ,
".ttf" : "application/octet-stream" ,
".ttz" : "application/t-time" ,
".txt" : "text/plain" ,
".uls" : "text/iuls" ,
".ult" : "audio/x-mod" ,
".ustar" : "application/x-ustar" ,
".uu" : "application/x-uuencode" ,
".uue" : "application/x-uuencode" ,
".vcd" : "application/x-cdlink" ,
".vcf" : "text/x-vcard" ,
".vdo" : "video/vdo" ,
".vib" : "audio/vib" ,
".viv" : "video/vivo" ,
".vivo" : "video/vivo" ,
".vmd" : "application/vocaltec-media-desc" ,
".vmf" : "application/vocaltec-media-file" ,
".vmi" : "application/x-dreamcast-vms-info" ,
".vms" : "application/x-dreamcast-vms" ,
".vox" : "audio/voxware" ,
".vqe" : "audio/x-twinvq-plugin" ,
".vqf" : "audio/x-twinvq" ,
".vql" : "audio/x-twinvq" ,
".vre" : "x-world/x-vream" ,
".vrml" : "x-world/x-vrml" ,
".vrt" : "x-world/x-vrt" ,
".vrw" : "x-world/x-vream" ,
".vts" : "workbook/formulaone" ,
".wav" : "audio/x-wav" ,
".wax" : "audio/x-ms-wax" ,
".wbmp" : "image/vnd.wap.wbmp" ,
".wcm" : "application/vnd.ms-works" ,
".wdb" : "application/vnd.ms-works" ,
".web" : "application/vnd.xara" ,
".wi" : "image/wavelet" ,
".wis" : "application/x-InstallShield" ,
".wks" : "application/vnd.ms-works" ,
".wm" : "video/x-ms-wm" ,
".wma" : "audio/x-ms-wma" ,
".wmd" : "application/x-ms-wmd" ,
".wmf" : "application/x-msmetafile" ,
".wml" : "text/vnd.wap.wml" ,
".wmlc" : "application/vnd.wap.wmlc" ,
".wmls" : "text/vnd.wap.wmlscript" ,
".wmlsc" : "application/vnd.wap.wmlscriptc" ,
".wmlscript" : "text/vnd.wap.wmlscript" ,
".wmv" : "audio/x-ms-wmv" ,
".wmx" : "video/x-ms-wmx" ,
".wmz" : "application/x-ms-wmz" ,
".wpng" : "image/x-up-wpng" ,
".wps" : "application/vnd.ms-works" ,
".wpt" : "x-lml/x-gps" ,
".wri" : "application/x-mswrite" ,
".wrl" : "x-world/x-vrml" ,
".wrz" : "x-world/x-vrml" ,
".ws" : "text/vnd.wap.wmlscript" ,
".wsc" : "application/vnd.wap.wmlscriptc" ,
".wv" : "video/wavelet" ,
".wvx" : "video/x-ms-wvx" ,
".wxl" : "application/x-wxl" ,
".x-gzip" : "application/x-gzip" ,
".xaf" : "x-world/x-vrml" ,
".xar" : "application/vnd.xara" ,
".xbm" : "image/x-xbitmap" ,
".xdm" : "application/x-xdma" ,
".xdma" : "application/x-xdma" ,
".xdw" : "application/vnd.fujixerox.docuworks" ,
".xht" : "application/xhtml+xml" ,
".xhtm" : "application/xhtml+xml" ,
".xhtml" : "application/xhtml+xml" ,
".xla" : "application/vnd.ms-excel" ,
".xlc" : "application/vnd.ms-excel" ,
".xll" : "application/x-excel" ,
".xlm" : "application/vnd.ms-excel" ,
".xls" : "application/vnd.ms-excel" ,
".xlsx" : "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" ,
".xlt" : "application/vnd.ms-excel" ,
".xlw" : "application/vnd.ms-excel" ,
".xm" : "audio/x-mod" ,
".xml" : "text/plain" ,
".xml" : "application/xml" ,
".xmz" : "audio/x-mod" ,
".xof" : "x-world/x-vrml" ,
".xpi" : "application/x-xpinstall" ,
".xpm" : "image/x-xpixmap" ,
".xsit" : "text/xml" ,
".xsl" : "text/xml" ,
".xul" : "text/xul" ,
".xwd" : "image/x-xwindowdump" ,
".xyz" : "chemical/x-pdb" ,
".yz1" : "application/x-yz1" ,
".z" : "application/x-compress" ,
".zac" : "application/x-zaurus-zac" ,
".zip" : "application/zip" ,
".json" : "application/json"
} ;
exports. getMime = ( fs, extname ) => Mimes[ extname] || 'text/html' ;