zoukankan      html  css  js  c++  java
  • 【python】flask+nginx配置

    背景信息

    1. 有wordpress服务A
    2. 有flask服务B, gunicorn启动,8个进程
    3. 用nginx代理,实现访问A然后跳转到B

    问题

    1. flask服务B上有文件上传操作,用nginx后发现无法上传大文件。
      解决: nginx代理配置中有文件大小限制client_max_body_size,修改即可
    location /test{
                    proxy_pass http://127.0.0.1:8001/test;
                    proxy_redirect     off;
                    proxy_set_header   Host             localhost;
                    proxy_set_header   X-Real-IP        $remote_addr;
                    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
                    client_max_body_size 100m;
            }
    
    1. 访问wordpress的1.1.1.1/a,通过nginx跳转到flask服务的127.0.0.1/b,127.0.0.1/b上有一个上传按钮,上传文件应该交由127.0.0.1/b的post处理,但由于nginx转发,跳转到了1.1.1.1/b post,结果就会找不到对应的服务接口
      解决:将flask和wordpress上的url使用相同的名字。wordpress 1.1.1.1/a -> flask 127.0.0.1/a -> wordpress 1.1.1.1/a post -> flask 127.0.0.1/a post
      (这个方法不好,因为flask和wordpress耦合了,但是我没有找到正确的解决方案,只好临时用这个了)

    2. flask中有全局变量,通过nginx跳转后,原本的请求可能由另一个进程接管,导致无法获取正确的信息。
      解决:用session解决,session中的变量是跨进程共享的,把状态信息放入session变量即可。此外,session也解决了用户识别问题,避免了多个用户同时请求导致的冲突。

  • 相关阅读:
    第四次寒假作业
    寒假作业三
    寒假作业二
    关于C语言
    寒假作业2代码
    计算机小白
    软工第二次作业
    新开始
    android 自定义滑动按钮
    新知识 HtMl 5
  • 原文地址:https://www.cnblogs.com/dplearning/p/9047664.html
Copyright © 2011-2022 走看看