如何在azure网站子目录中运行node.js应用程序
我已经创build了一个使用Azure的网站,我想在一个子目录(例如app1 / test)中运行一个node.js应用程序,而不是创build一个新的网站并在根目录下运行应用程序。
这是我的目录结构
-wwwroot / web.config中
-wwwroot / index.html的
-wwwroot / APP1 /testing/的package.json
-wwwroot / APP1 /testing/ server.js
所以有一个index.html在根目录中,然后我在test子目录中的server.js。
这是我的server.js:
var http = require('http'); var port = process.env.port || 1337; http.createServer(function (req, res) { res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('Hello World\n'); }).listen(port);
这是我的package.json:
{ "name": "test", "version": "0.0.0", "description": "test", "main": "server.js", "author": { "name": "name", "email": "" }, "dependencies": { } }
我的web.config:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <location path="app1/test"> <system.webServer> <modules runAllManagedModulesForAllRequests="false" /> <!-- indicates that the server.js file is a node.js application to be handled by the iisnode module --> <handlers> <add name="iisnode" path="server.js" verb="*" modules="iisnode" /> </handlers> <rewrite> <rules> <rule name="app" enabled="true" patternSyntax="ECMAScript" stopProcessing="true"> <match url="iisnode.+" negate="true" /> <conditions logicalGrouping="MatchAll" trackAllCaptures="false" /> <action type="Rewrite" url="server.js" /> </rule> </rules> </rewrite> </system.webServer> </location> <system.webServer> <handlers> <add name="iisnode" path="server.js" verb="*" modules="iisnode" /> </handlers> </system.webServer> </configuration>
但是我明白了
“页面无法显示,因为发生了内部服务器错误。”
当我打到域名/ app1 /testing
不知道我的web.config有什么问题,如果我需要手动安装iisnode。
我感谢任何帮助。
谢谢
我解决了它! 以下作品!
<match url="app1/test" /> <action type="Rewrite" url="app1/test/server.js" />
您需要检查您的请求url是否在您要检查的位置,在这种情况下:
var http = require('http'); var port = process.env.port || 1337; http.createServer(function (req, res) { if(req.url === '/app1/test') res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('Hello World\n'); }).listen(port);
然后你可以通过转到页面来testing它
http://localhost:1337/app1/test