Azure功能应用程序返回502 Bad Gateway

时间:2017-10-05 10:38:15

标签: azure azure-functions

当我在主插槽上运行HTTP Triggered功能应用程序时,我收到以下错误消息:



 Status: 502 Bad Gateway
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<title>502 - Web server received an invalid response while acting as a gateway or proxy server.</title>
<style type="text/css">
<!--
body{margin:0;font-size:.7em;font-family:Verdana, Arial, Helvetica, sans-serif;background:#EEEEEE;}
fieldset{padding:0 15px 10px 15px;} 
h1{font-size:2.4em;margin:0;color:#FFF;}
h2{font-size:1.7em;margin:0;color:#CC0000;} 
h3{font-size:1.2em;margin:10px 0 0 0;color:#000000;} 
#header{width:96%;margin:0 0 0 0;padding:6px 2% 6px 2%;font-family:"trebuchet MS", Verdana, sans-serif;color:#FFF;
background-color:#555555;}
#content{margin:0 0 0 2%;position:relative;}
.content-container{background:#FFF;width:96%;margin-top:8px;padding:10px;position:relative;}
-->
</style>
</head>
<body>
<div id="header"><h1>Server Error</h1></div>
<div id="content">
 <div class="content-container"><fieldset>
  <h2>502 - Web server received an invalid response while acting as a gateway or proxy server.</h2>
  <h3>There is a problem with the page you are looking for, and it cannot be displayed. When the Web server (while acting as a gateway or proxy) contacted the upstream content server, it received an invalid response from the content server.</h3>
 </fieldset></div>
</div>
</body>
</html>
&#13;
&#13;
&#13;

但是当我尝试使用相同的代码创建一个新的插槽和功能应用程序时,它可以正常工作而不会出现上述错误。我们的主要插槽配置似乎存在问题,但我无法找到任何资源来指出它。

还有其他人遇到过这个问题吗?你怎么修好它的?

5 个答案:

答案 0 :(得分:1)

当我将MongoDB中的对象(通过Mongoose方法:Model.find())直接发送到响应时,我遇到了这个问题。

./gradlew -PspringProfile=test build

我必须将此正文对象更改为:

          Claim.find()
            .then(claims => {
                context.res = {
                    status: 200,
                    headers: {
                        'Content-Type': 'application/json',
                        'Access-Control-Allow-Origin': '*'
                    },
                    body: claims
                };
                context.done();
            })

答案 1 :(得分:0)

我在不同的情况下多次看到502错误 大多数情况下,这是我的编程错误/配置问题 但今天花了很多时间才找到这个问题,所以在这里分享。

问题#1

s3 = new AWS.S3();
AWS.config.loadFromPath(dirName1 + '\\aws-config.json');
s3.listObjectsV2(..);

虽然错误在第1行,但问题发生在第3行

解决方案是:

AWS.config.loadFromPath(dirName1 + '\\aws-config.json');
s3 = new AWS.S3();
s3.listObjectsV2(..);

也就是说,在加载aws配置之后,我们需要创建s3新的实例变量。

问题#2

如此处所示,https://stackoverflow.com/a/39240447/984471是关于将文件写入不可访问的目录,而您可以写入D:\ local \ Temp,我们不能写其他目录,如当前目录或D: \

不幸的是,在上面的示例和我的其他实例中,Azure函数存在而没有任何日志功能控制台,因此需要进行大量调试。

答案 2 :(得分:0)

我也遇到了同样的错误。我在事件处理函数的末尾写了“context.done(null,output)”,它工作正常。

答案 3 :(得分:0)

就我而言,这是缺少 WEBSITE_NODE_DEFAULT_VERSION 应用程序设置(Node.js Windows 函数应用程序,高级版和消费版托管计划中均出现错误)。

如果您在 Azure 门户中创建函数应用,应用设置会自动设置,但如果您使用 IaC 工具(在我的情况下为 Terraform),则需要明确设置它。

"WEBSITE_NODE_DEFAULT_VERSION" = "~14"

答案 4 :(得分:0)

我遇到了同样的错误,我只是忘记添加“内容类型”标题“应用程序/json”。添加标题后它对我来说很好