Servir des fichiers statiques à partir d’iisnode avec URL Rewrite

J’utilise une règle de réécriture dans mon fichier web.config pour une application de noeud exécutée sous issnode afin de pointer vers mon fichier server.js. myapp / * pointe sur server.js.

    

Cela a fonctionné très bien www.mywebsite.com/myapp/ chargerait une course mon application. Ce que je voulais, c’était une redirection à partir de la racine du site Web afin que mon site www.website.com/ exécute mon application. J’ai donc changé mon fichier web.config

      

Il s’agit donc d’exécuter le fichier server.js et de servir un fichier html statique. Le seul problème est de référencer tous les fichiers externes de mon fichier html (css, js, images, etc.). Obtenez juste 500 s pour chaque demande. J’utilise ceci pour servir des fichiers statiques

  var libpath = require('path'); var _path = "."; <-- This seems to be the problem var uri = url.parse(req.url).pathname; var filename = libpath.join(_path, uri); fs.readFile(filename, "binary", function (err, file) { if (err) { res.writeHead(500, { "Content-Type": "text/plain" }); res.write(err + "\n"); res.end(); return; } var type = mime.lookup(filename); res.writeHead(200, { "Content-Type": type }); res.write(file, "binary"); res.end(); }); break; 

Ma question est donc de savoir comment pointer vers la racine de mon nœud app / server pour servir des fichiers statiques.

Merci

Jono

La meilleure façon de servir du contenu statique dans iisnode consiste à configurer le module de réécriture d’URL de sorte que le gestionnaire de fichiers statiques IIS traite les demandes de contenu statique plutôt que node.js. Le fait de servir IIS à un contenu statique présente un avantage considérable en termes de performances par rapport à la gestion de ces fichiers à l’aide de mécanismes node.js, en raison d’optimisations au niveau du kernel en ce qui concerne la mise en cache et le fait que le code JavaScript n’est pas nécessaire.

Pour obtenir une configuration web.config simplifiée, reportez-vous à la page https://github.com/tjanczuk/iisnode/issues/160#issuecomment-5606547.

J’ai eu quelques problèmes en utilisant la configuration de règle suggérée, alors j’ai apporté quelques modifications:

                        
  • La première règle préfixe toutes les requêtes avec www , mon répertoire client.
  • La deuxième règle arrête le traitement si le fichier existe ou si le chemin racine est demandé
  • La troisième règle réécrit quoi que ce soit d’autre sur le nom de mon script de nœud d’arrière-plan afin qu’il puisse être capturé par le gestionnaire iisnode.

Notez que le chemin du gestionnaire iisnode est défini sur /index.js ce qui semble éliminer les conflits avec les fichiers client du même nom.