我正在运行Flask应用程序并使用uwsgi socket nginx配置。
这可能是一个愚蠢的问题,但我面临的问题是每当Flask代码中出现异常(例如1/0的非处理异常)时,我的nginx给出502而不是500.我想知道是否提高默认情况下,异常不会从uwsgi unix socket传播到nginx为500,或者我是否需要明确指定?在某处我读到了异常,Flask并没有自动提出500错误信息。任何评论都会有所帮助。感谢。
答案 0 :(得分:1)
看看502规范:
超文本传输协议502错误网关服务器错误响应 代码表示服务器在充当网关或代理时, 从上游服务器收到无效响应。
如果您的应用在响应异常时响应任何内容,则很可能是垃圾和nginx(正确地)引发502,这意味着“我不会(而不是不能)与后端通话”。
如果你想要500s,你必须捕获任何可能的底层异常,将它包装在一个有效的响应中,它将由nginx处理。
答案 1 :(得分:0)
最后我能够解决这个问题。感谢@Jeff Storey和@joppich。
我的代理服务器无法读取导致此问题的后端服务器的响应。我添加了一个拦截器来捕获所有异常,并使用nginx proxy_intercept_errors on;
通过uwsgi将其传播到NGINX。非常感谢Jeff和joppich。感谢您的帮助。