python django nginx简要说明和配置

python + django 是个应用程序, 并没有http或websocket的能力

这里有两种方法,简要说明下

1、django提供了daphne使用channel提供http和websocket

2、django+nginx(配置uwsgi.ini和uwsgi_params 使用uwsgi和nginx提供http服务

下面是我在项目是使用时的一些记录

流程:
1. 首先客户端请求服务资源,
2. nginx作为直接对外的服务接口,接收到客户端发送过来的http请求,会解包、分析,
3. 如果是静态文件请求就根据nginx配置的静态文件目录,返回请求的资源,
4. 如果是动态的请求,nginx就通过配置文件,将请求传递给uWSGI;uWSGI 将接收到的包进行处理,并转发给wsgi,
5. wsgi根据请求调用django工程的某个文件或函数,处理完后django将返回值交给wsgi,
6. wsgi将返回值进行打包,转发给uWSGI,
7. uWSGI接收后转发给nginx,nginx最终将返回值返回给客户端(如浏览器)。
*注:不同的组件之间传递信息涉及到数据格式和协议的转换*
作用:
1. 第一级的nginx并不是必须的,uwsgi完全可以完成整个的和浏览器交互的流程;
2. 在nginx上加上安全性或其他的限制,可以达到保护程序的作用;
3. uWSGI本身是内网接口,开启多个work和processes可能也不够用,而nginx可以代理多台uWSGI完成uWSGI的负载均衡;
4. django在debug=False下对静态文件的处理能力不是很好,而用nginx来处理更加高效。

直接使用uwsgi启动: (发现static静态文件没生效,需要配置http://uwsgi-docs.readthedocs.io/en/latest/StaticFiles.html)
uwsgi --http :8056 --wsgi-file dirserver/wsgi.py #自己开http服务
uwsgi --socket :8056 --wsgi-file dirserver/wsgi.py #使用nginx配合使用时
或修改uwsgi.ini配置表
uwsgi --ini uwsgi.ini启动


nginx配置:
/etc/nginx/sites-enabled/default
upstream django {
server unix:///home/lee/doomhotel/dev/dirserver/dirserver.sock;
}
server {
listen 8099 default_server;
listen [::]:8099 default_server;
location /static {
alias /home/lee/doomhotel/dev/dirserver/static;
}

location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
# try_files $uri $uri/ =404;
include /home/lee/doomhotel/dev/dirserver/uwsgi_params;
uwsgi_pass django;
uwsgi_read_timeout 2;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值