Gunicorn 搭配 Nginx

拓扑

Gunicorn 搭配 Nginx_第1张图片
image.png

加装Nginx是否有必要

Nginx作为代理服务器,监听来自外部的80端口的请求;而Gunicorn负责监听本地机8000端口的请求。Nginx会把来自外部的请求转发给Gunicorn处理,接收到响应后再返回给客户端。这样做有下面这些好处:

  • 提高处理静态文件的效率。Nginx处理静态文件的速度非常快,而且可以对静态文件设置缓存。
  • 提高安全系数。使用它可以避免直接暴露WSGI服务器,而且可以作为防火墙来防御网络攻击。
  • 提高程序处理能力。设置反向代理可以缓冲请求,对请求进行预处理,交给WSGI服务器一个完整的HTTP请求。还可以设置负载均衡,优化请求处理效率。

Nginx配置常用指令

Gunicorn 搭配 Nginx_第2张图片
image.png

常见配置

server {
    listen 80 default_server;
    server_name _;  # 如果你映射了域名,那么可以写在这里
    access_log  /var/log/nginx/access.log;
    error_log  /var/log/nginx/error.log;
    location / {
        proxy_pass http://127.0.0.1:8000;  # 转发的地址,即Gunicorn运行的地址
        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_set_header   X-Forwarded-Proto    $scheme;
    }
    location /static {  # 处理静态文件夹中的静态文件
        alias /home/tom/cmm/cmm/static/;  # cmm 假设是应用的名称
        expires 30d;  # 设置缓存过期时间
    }
}

flask扩展包中的资源无法使用nginx的静态资源缓存

  • 测试配置语法 nginx -t
  • 重启nginx service nginx restart

还可以根据需要搭配 Supervisor 管理应用(更新、启动、停止)

Gunicorn 搭配 Nginx_第3张图片
image.png

你可能感兴趣的:(Gunicorn 搭配 Nginx)