拓扑
image.png
加装Nginx是否有必要
Nginx作为代理服务器,监听来自外部的80端口的请求;而Gunicorn负责监听本地机8000端口的请求。Nginx会把来自外部的请求转发给Gunicorn处理,接收到响应后再返回给客户端。这样做有下面这些好处:
- 提高处理静态文件的效率。Nginx处理静态文件的速度非常快,而且可以对静态文件设置缓存。
- 提高安全系数。使用它可以避免直接暴露WSGI服务器,而且可以作为防火墙来防御网络攻击。
- 提高程序处理能力。设置反向代理可以缓冲请求,对请求进行预处理,交给WSGI服务器一个完整的HTTP请求。还可以设置负载均衡,优化请求处理效率。
Nginx配置常用指令
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 管理应用(更新、启动、停止)
image.png