我创建了一个简单的nodejs web应用程序并上传到Azure,但它总是返回403禁止。
请求网址:https://wemwebconsole.azurewebsites.net/
请求方法:GET
状态代码:403 Forbidden
我该如何解决这个问题?有什么不对吗?
文件树如下所示。
的index.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1> <%= temp %></h1>
</body>
</html>
server.js
var express = require('express');
var app = express();
var path = require('path');
var ejs = require('ejs');
var serveIndex = function(req, res, next) {
next();
};
//app.use(express.static(path.join(__dirname, 'dist')));
serveIndex = function(req, res, next) {
function renderIndex() {
var data = {
hhh:'hahaha'
};
ejs.renderFile( path.resolve('dist/index.html'), data, 'utf8', function (err, str) {
if (err === null) {
res.status(200).end(str);
}
else {
next(err);
}
});
};
renderIndex()
}
app.get('*', serveIndex);
app.listen(process.env.PORT || 443);
的package.json
{
"name": "app",
"version": "0.0.0",
"private": true,
"scripts": {
"build": "",
"dev": "",
"start": "node server.js"
},
"dependencies": {
"ejs": "2.4.1",
"express": "~4.13.4"
},
}
更新: 添加web.config不起作用:
<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>
</system.webServer>
答案 0 :(得分:3)
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="iisnode" path="server.js" verb="*" modules="iisnode"/>
</handlers>
<rewrite>
<rules>
<rule name="DynamicContent">
<match url="/*" />
<action type="Rewrite" url="server.js"/>
</rule>
</rules>
</rewrite>
</system.webServer>
好的,具体的web.config就在这里。
答案 1 :(得分:0)
您可以尝试访问kudu控制台来调查此问题。 403错误可能意味着许多事情;要么您无法访问此站点,要么停止站点或超出配额。有关详细信息,请参阅此文档:https://github.com/projectkudu/kudu/wiki/Investigating-issues。
此外,您可以尝试启用诊断日志以检查确切的错误消息,看看它是否有帮助:https://docs.microsoft.com/en-us/azure/app-service/web-sites-enable-diagnostic-log。
答案 2 :(得分:0)
我尝试了您的代码,它会在我的网站上抛出错误temp is not defined
。
如果我将数据对象更改为以下内容,它可以正常工作:
var data = {
temp: 'hahaha'
};
此外,您可以按照帖子here启用stdout和stderr的日志记录,以对Azure中的Node.js应用进行故障排除。