部署应用¶
gunicorn官方主站强烈推荐nginx作为web server proxy,同时给出建议:如果选择其他的web server,在使用gunicorn的sync worker时,就需要确保它能缓冲慢速客户端的请求。没有这个缓冲的功能,gunicorn很容易遭受dos的攻击。可以用slowloris测试一下,看看你的web server proxy的响应如何。
slowloris是什么? 瞧瞧去:
http://ha.ckers.org/slowloris/
slowloris,采用perl编写的一个脚本,有趣有趣。
转回正题,看看下面是nginx的配置示例,在nginx.conf中http部分加入:
upstream app_server {
server http://localhost:8000 fail_timeout=0;
}
在sites-available目录下的default中:
server {
listen 80 default;
client_max_body_size 4G;
server_name _;
keepalive_timeout 5;
location / {
# checks for static file, if not found proxy to app
try_files $uri @proxy_to_app;
}
location @proxy_to_app {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://app_server;
}
}
在浏览器中输入:
http://localhost
即可得到输出结果