在Azure Web App上运行Node.js

在Azure Web App上运行Node.js,第1张

在Azure Web App上运行Node.js

Windows
Azure网站使用IISNode在IIS中托管Node进程。实际上,为Node站点分配了一个命名管道,该管道接收传入的请求,而不是像在本地运行或托管自己时使用的TCP端口。即使您可以打开TCP端口,Azure网站实际上也仅适用于传统网站,而无法打开通往外界的端口。

因此,首先,您需要在代码中更改端口,例如:

var port = process.env.PORT||3000; //which you can runboth on Azure or local var server = app.listen(process.env.PORT||3000);

在我的测试中,我们需要配置一些其他配置,以从应用程序中删除错误,以使其在Azure Web App上运行。

看来这会在https://github.com/alexmingoia/koa-
router/issues/177
直接在Azure上运行koa应用程序时引起同样的问题,因此我们需要配置

nodeProcessCommandLine

创建一个以

iisnode.yml
内容命名的文件
nodeProcessCommandLine:"%programfiles%nodejs%WEBSITE_NODE_DEFAULT_VERSION%node.exe"--harmony-generators
设置 WEBSITE_NODE_DEFAULT_VERSION* 相对于您在站点管理器门户网站的“
配置” 标签中的 应用程序设置 中设置的值。
*

作为运行在Azure Web
Apps上的node.js应用程序,需要以

server.js
app.js
文件作为根目录中的入口,并带有一个
web.config
文件来控制iis(如果您通过git部署或通过node.js模板构建应用服务器,它将自动创建)。例如

<configuration><system.webServer>    <handlers>        <!-- indicates that the app.js file is a node.js application to be handled by the iisnode module -->        <add name="iisnode" path="server.js" verb="*" modules="iisnode" />    </handlers>    <rewrite>        <rules> <!-- Don't interfere with requests for logs --> <rule name="LogFile" patternSyntax="ECMAscript" stopProcessing="true">     <match url="^[a-zA-Z0-9_-]+.js.logs/d+.txt$" /> </rule> <!-- Don't interfere with requests for node-inspector debugging --> <rule name="NodeInspector" patternSyntax="ECMAscript" stopProcessing="true">   <match url="^server.js/debug[/]?" /> </rule> <!-- First we consider whether the incoming URL matches a physical file in the /public folder --> <rule name="StaticContent">     <action type="Rewrite" url="public{REQUEST_URI}" /> </rule> <!-- All other URLs are mapped to the Node.js application entry point --> <rule name="DynamicContent">     <conditions>         <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="True" />     </conditions>     <action type="Rewrite" url="server.js" /> </rule>        </rules>    </rewrite></system.webServer>

因此,您可以将SPA文件放在

public
根目录下的文件夹中,例如,您的SPA入口是
index.html
,当您访问
<your_site_name>.azurewebsites.net/index.html
它时,它将被重写为“
/public/index.html”。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5427950.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存