记录一次 nginx + flask + uwsgi + supervisor 404问题

场景: 微信公众号开发,服务器配置的是一个子域名https://xxx.com/xxxx/wxnotify/然后在nginx中xxxx已经设置为指向服务器的端口8080,之前的服务器代码是java,上手成本高,所以还是用我熟悉的python。将我的部分功能的uri设为:https://xxx.com/xxxx/wxnotify/menu 配置nginx的时候upstream到uwsgi设置的8001端口,在配置环境的时候nginx配置时遇到了麻烦,一直404,折腾了一个下午,终于解决,记录如下,希望能够帮到遇到同样问题的同学:
首先 配置nginx,如下:

  server {
      listen  443;
      server_name XXX.XXX.XXX; #公网地址
    
      location / {
       }
      location /xxxx/wxnotify/menu {
        include      uwsgi_params;
        uwsgi_pass   127.0.0.1:8001;  # 指向uwsgi 所应用的内部地址,所有请求将转发给uwsgi 处理
        uwsgi_param UWSGI_PYHOME /home/www/my_flask/venv; # 指向虚拟环境目录
        uwsgi_param UWSGI_CHDIR  /home/www/my_flask; # 指向网站根目录
        uwsgi_param UWSGI_SCRIPT manage:app; # 指定启动程序
      }
      location /xxxx/ {
        ....
      }
    }

location根据最长匹配原则,将发来的https://xxx.com/xxxx/wxnotify/menu转到8801端口,注意这边uwsgi_pass写的是127.0.0.1:8001 是没有带“/”的,根据 https://www.jianshu.com/p/b8f345376b68 中可以看到加/与不加/的区别,我折腾了半天有大部分原因是没有注意到这个知识点,导致一直不能出坑。
正式因为127.0.0.1:8001没有带"/",因此https://xxx.com/xxxx/wxnotify/menu 对应的是https://127.0.0.1:8001/xxxx/wxnotify/menu,而我在代码中没有加/xxxx/wxnotify/menu前缀,导致一直404,最终解决方法:

app.register_blueprint(api_blueprint, url_prefix='//xxxx/wxnotify/menu')

解决问题

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容