python – 当通过nginx代理时,Flask应用程序提供无处不在的404

我有一个烧瓶应用程序通过主管守护.我想将localhost上的子文件夹proxy_pass传递给烧瓶应用程序.烧瓶应用程序在直接运行时正确运行,但在通过代理调用时会出现404错误.这是nginx的配置文件:

upstream apiserver {
    server 127.0.0.1:5000;
}

location /api {
            rewrite /api/(.*) /$1 break;
            proxy_pass_header Server;
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Scheme $scheme;
            proxy_pass http://apiserver;
            proxy_next_upstream error timeout http_502;
            proxy_buffering off;

}

例如,当我访问http://127.0.0.1:5000/me时,我从应用程序获得了有效的响应.然而,当我去http://127.0.0.1/api/me时,我从烧瓶应用程序(不是nginx)获得了404.此外,烧瓶SERVER_NAME变量设置为127.0.0.1:5000,如果这很重要.

我真的很感激任何建议;我很难过!如果我需要添加其他内容,请告诉我们!

最佳答案
由于Flask正在处理请求,您可以在404错误中添加一些信息,以帮助您了解传递给应用程序的内容,并为您提供有关nginx配置更改导致的影响的实际反馈.

from flask import request

@app.errorhandler(404)
def page_not_found(error):
    return 'This route does not exist {}'.format(request.url),404

因此,当您获得404页面时,它将有助于告诉您Flask正在处理的内容,这可以帮助您快速缩小问题范围.

dawei

【声明】:丽水站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。