• Nginx转发由uWSGI托管的Flask程序


    1.预设的目录结构

    │  .gitignore
    │  README.en.md
    │  README.md
    │  txt.txt
    │  
    ├─api_invcloud
    │      mid.py
    │      
    ├─bin
    │      run.sh
    │      uwsgi.ini.default
    │      
    └─logs

    mid.py是入口文件,应用定义为:

    app = Flask(__name__)

    2.uwsgi.ini配置

    [uwsgi]
    http = 127.0.0.1:9999
    chdir = ../api_invcloud/
    wsgi-file = mid.py
    callable = app
    processes = 4
    threads = 2
    py-autoreload = 1
    pidfile=uwsgi.pid
    vacuum = true
    
    # log setting
    disable-logging = false
    daemonize = ../logs/uwsgi.log

    3.Nginx转发配置

    upstream uwsgi_server{
        server 127.0.0.1:9999;
        # 如果有多个服务,可以罗列在此当作负载均衡节点,n表示权重
        # server 127.0.0.1:9999 weight=n;
    }
    
    server {
        location /test {
            proxy_pass  http://uwsgi_server;
            proxy_redirect     off;
            proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
            proxy_max_temp_file_size 0;
            proxy_connect_timeout      90;
            proxy_send_timeout         90;
            proxy_read_timeout         90;
            proxy_buffer_size          4k;
            proxy_buffers              4 32k;
            proxy_busy_buffers_size    64k;
            proxy_temp_file_write_size 64k;
        }
    }

    PS:

    1.如果Python程序作为目录形式转发,可以将目录配置在全站配置之前;如果是全站转发,可以将静态资源目录独立出来,放在全站配置之前配置。

    2.第一次通过Nginx访问如果发生500错误,可以尝试直接通过python运行入口文件,看看是否可以正常启动;或者通过 tail filename.log -f 的形式来查看uwsgi的日志。

    3.用windows的,放弃挣扎吧。uWSGI无法在Windows中安装,直接会提示OS错误。Windows中整合IIS与Python,尝试使用wfastcgi。

  • 相关阅读:
    代理模式与Android
    图数据库 Titan 高速入门
    怎样编写支持命令行选项的程序
    协方差的意义
    我所理解的Spring AOP的基本概念
    Google搜索解析
    POJ 3311 Hie with the Pie floyd+状压DP
    JS怎样将拖拉事件与点击事件分离?
    C++语言笔记系列之十二——C++的继承
    Mac下Android配置及unity3d的导出Android
  • 原文地址:https://www.cnblogs.com/bashenandi/p/13689492.html
Copyright © 2020-2023  润新知