我有一个烧瓶应用程序通过管理程序监控。我想把本地主机上的一个子文件夹代理到flask应用程序。flask应用程序在直接运行时运行正常,但是在通过代理调用时会出现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
时,我从flask应用程序(不是nginx)得到了404。另外,如果重要的话,flask SERVER_NAME
变量设置为127.0.0.1:5000
。在
我真的很感激你的建议,我真的很困惑!如果还有什么需要补充的,告诉我!在
由于Flask正在处理请求,所以您只需在404错误中添加一点信息,以帮助您了解传递给应用程序的内容,并就nginx配置更改所造成的影响向您提供一些真实的反馈。在
所以当你得到一个404页,它会很有帮助地告诉你到底是什么瓶子在处理,这将帮助你很快缩小你的问题。在
我建议不要设置服务器名。在
如果设置了SERVER_NAME,它将404任何与该值不匹配的请求。在
我遇到了同样的问题。Flask应该在这里提供更详细的错误,因为裸404并不是很有用。在
在我的例子中,SERVER_NAME被设置为我的域名(例如
example.com
)。在nginx没有使用服务器名转发请求,正如@Zoidberg所说,这导致Flask触发404。在
解决方案是将nginx配置为使用与Flask相同的服务器名称。},取决于定义服务器的位置):
在nginx配置文件中(例如
sites_available
或{相关问题 更多 >
编程相关推荐