azure上的nodejs返回403

时间:2018-04-02 03:01:47

标签: javascript node.js azure azure-web-sites

我创建了一个简单的nodejs web应用程序并上传到Azure,但它总是返回403禁止。

请求网址:https://wemwebconsole.azurewebsites.net/

请求方法:GET

状态代码:403 Forbidden

我该如何解决这个问题?有什么不对吗?

文件树如下所示。

enter image description here

的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>

3 个答案:

答案 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应用进行故障排除。