使用StaticFiles URL重写服务在IISNODE中提供静态文件
我想在IIS上部署一个Node.js应用程序。 我看到了GitHub存储库上的示例( https://github.com/tjanczuk/iisnode/tree/master/src/samples )。
我被困在服务静态文件。 和普通的Node应用程序一样,我将静态文件存储在一个名为public的文件夹中。 按照几个博客/论坛上的build议,我在web.config中添加了以下规则:
<rule name="StaticContent"> <action type="Rewrite" url="public{REQUEST_URI}"/> </rule>
但它不起作用。 如果任何人有一个示例应用程序来certificate这个问题,这将是非常有帮助的。
查看iisnode web.config示例,该示例将对公用文件夹中的静态文件的请求redirect到IIS的静态文件处理程序,而不是http://tomasz.janczuk.org/2012/05/yaml-configuration-support- in-iisnode.html 。
如果有人在Google上遇到这个问题,并且遇到了接受答案中提到的示例web.config问题…
这是我工作的web.config文件:
<?xml version="1.0" encoding="utf-8"?> <configuration> <system.webServer> <handlers> <add name="iisnode" path="server/app.js" verb="*" modules="iisnode" /> </handlers> <rewrite> <rules> <rule name="LogFile" patternSyntax="ECMAScript" stopProcessing="true"> <match url="iisnode" /> </rule> <rule name="NodeInspector" patternSyntax="ECMAScript" stopProcessing="true"> <match url="^server\/app.js\/debug[\/]?" /> </rule> <rule name="StaticContent" patternSyntax="ECMAScript" stopProcessing="true"> <match url=".*" /> <action type="Rewrite" url="public/{C:1}" logRewrittenUrl="true" /> <conditions> <add input="{REQUEST_URI}" pattern=".*?virtualpath\/(.*)" /> </conditions> </rule> <rule name="DynamicContent" patternSyntax="ECMAScript"> <match url=".*" /> <conditions> <add input="{{REQUEST_FILENAME}}" matchType="IsFile" negate="True" /> </conditions> <action type="Rewrite" url="server/app.js" logRewrittenUrl="true" /> </rule> </rules> </rewrite> <security> <requestFiltering> <hiddenSegments> <add segment="node_modules" /> </hiddenSegments> </requestFiltering> </security> </system.webServer> </configuration>
我的文件夹结构是:
- virtualpath / – 指IISconfiguration的虚拟path
- public / – 包含静态内容
- server / – 包含服务器应用程序文件