Docker中Flask+Nginx+uWSGI集成出现404 Not Found问题求助
解决Docker中Flask+uWSGI+Nginx的404问题
问题根源
你当前的Nginx配置会把完整的/sample路径转发给Flask容器,但你的Flask应用只配置了/路由,Flask找不到对应路径所以返回404。从日志能看出,Flask接收到的请求路径与定义的路由不匹配,导致404错误。
修复方案(二选一)
方案1:修改Flask路由匹配/sample
直接调整Flask应用的路由,匹配/sample路径:
from flask import Flask app = Flask(__name__) @app.route("/sample") def index(): return "Welcome to the site" if __name__ == "__main__": app.run()
方案2:修改Nginx配置重写请求路径
如果不想改动Flask代码,可在Nginx配置中添加路径重写逻辑,将/sample前缀去除后再转发给Flask:
server { listen 80; location / { root /usr/share/nginx/html; index index.html index.htm; } location /sample { include uwsgi_params; uwsgi_pass flask:8000; rewrite ^/sample(.*)$ $1 break; uwsgi_param SCRIPT_NAME ''; } }
验证
修改完成后重启Flask和Nginx容器,执行curl http://localhost/sample即可正常获取Flask应用的响应。
内容的提问来源于stack exchange,提问作者thowbik_dustan
相关产品推荐
相关产品推荐

