aolishuai 2019-12-13
uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议。Nginx中HttpUwsgiModule的作用是与uWSGI服务器进行交换。
要注意 WSGI / uwsgi / uWSGI 这三个概念的区分。
为什么有了uWSGI为什么还需要nginx?因为nginx具备优秀的静态内容处理能力,然后将动态内容转发给uWSGI服务器,这样可以达到很好的客户端响应。
pip install uwsgi
在项目目录下touch一个ini文件,名称随意,vim进去,复制以下代码
[uwsgi] socket = 0.0.0.0:8000 # 设置0.0.0.0表示可以接收不同服务器的nginx发送过来的请求,127.0.0.1表示只接收同一服务器发送过来的请求, 8000为应用内的监听端口# http = 0.0.0.0:8000 # http为直接作为web服务器启动 chdir = /knowledge # 指向项目目录 wsgi-file = app.py # 程序启动文件 callable = app # 程序内应用变量名 processes = 2 # 处理器数量 threads = 4 # 线程数
uwsgi --ini uwsgi.ini # 启动后直接进控制台nohup uwsgi --ini uwsgi.ini & # 后台启动uwsgi服务器kill -9 pid # 关闭服务,直接kill uwsgi的端口
nginx是一款轻量级的Web 服务器 、反向代理服务器及电子邮件(IMAP/POP3)代理服务器。主要有反向代理,负载均衡的功能。
正向代理是服务器经过正向代理服务器把数据给到客户端,反向代理就是多个不同的客户端发出请求到反向代理服务器(nginx),反向代理服务器按照一定规则把请求分发给服务器A,服务器B,服务器C。
正向代理客户端非常明确要访问的服务器地址,服务器只清除请求来自哪个代理服务器,而不清楚来自哪个具体的客户端。反向代理客户端不知道访问的服务器地址是哪个,只能由反向代理服务器去分配请求给某个具体的服务器。
将服务器接收到的请求按照规则分发的过程。
apt-get install nginx
service nginx start # 启动 service nginx stop # 停止 service nginx reload # 重启 service nginx status # 查看nginx状态 nginx -v # 查看版本
cd 到安装目录,一般是/etc/nginx,里面有个nginx.conf文件
vim 进去,匹配顺序是先ip > 端口 > location
http { server { listen 81; # nginx的监听端口,浏览器访问的端口,等同于0.0.0.0:81, 表示可以接收任何IP发的请求 server_name 0.0.0.0; # 可以直接写域名如:www.flasktest.com,但是需要在hosts文件设置IP和域名的对应关系 charset UTF-8; access_log /etc/nginx/FlaskTest_access.log; error_log /etc/nginx/FlaskTest_error.log; client_max_body_size 75M; # 请求文件的最大大小 location / { include uwsgi_params; uwsgi_pass 127.0.0.1:82; # 上面的匹配成功后,会请求这个地址 uwsgi_read_timeout 2; } } }