nginx+flask搭建接口服务器
Introduction
Flask提供web应用框架,实现数据接口;Nginx实现反向代理功能,对外提供访问服务。
- Flask安装及demo实现
- Nginx反向代理实现
Flask安装及demo实现
安装virtaulenv
1sudo pip install virtualenv
why使用env虚拟环境:(为每个项目提供独立的环境,避免不同版本的python兼容问题)说明文档
启动env环境
1 2
进入env安装目录:cd env/bin 启动:. activate
安装Flask
1pip install Flask
demo及运行
1 2 3 4 5 6 7 8
from flask import Flask app=Flask(__name__) @app.route('/hello') def hello_world(): return "Hello World" if __name__=='__main__': app.run()
保存后,执行:
1
|
python helloworld.py |
此时不要关闭终端,打开浏览器输入:http://localhost:5000/hello
flask环境搭建完成。
nginx反向代理
什么是代理服务器
代理服务器,客户机在发送请求时,不会直接发送给目的主机,而是先发送给代理服务器,代理服务接受客户机请求之后,再向主机发出,并接收目的主机返回的数据,存放在代理服务器的硬盘中,再发送给客户机。
什么是反向代理服务器
反向代理服务器架设在服务器端,通过缓冲经常被请求的页面来缓解服务器的工作量,将客户机请求转发给内部网络上的目标服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器与目标主机一起对外表现为一个服务器。
作用
- 提高访问速度
由于目标主机返回的数据会存放在代理服务器的硬盘中,因此下一次客户再访问相同的站点数据时,会直接从代理服务器的硬盘中读取,起到了缓存的作用,尤其对于热门站点能明显提高请求速度。
- 防火墙作用
由于所有的客户机请求都必须通过代理服务器访问远程站点,因此可在代理服务器上设限,过滤某些不安全信息。
- 通过代理服务器访问不能访问的目标站点
互联网上有许多开发的代理服务器,客户机在访问受限时,可通过不受限的代理服务器访问目标站点,通俗说,我们使用的翻墙浏览器就是利用了代理服务器,虽然不能出国,但也可直接访问外网。
安装
1 2 3 4 5 6 7 8
tar -zxvf nginx-1.6.3.tar.gz cd nginx-1.6.3 #安装路径和安装模块自行设置 #最简化 ./configure ./configure --prefix=/home/work/install/nginx --with-http_ssl_module --with-pcre --with-http_realip_module --with-http_stub_status_module --without-http_userid_module --http-log-path=/home/work/logs/nginx/access_log --error-log-path=/home/work/logs/nginx/error_log --pid-path=/home/work/install/nginx/var/nginx.pid make make install
反向代理配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
server { listen 8080; #设置域名访问 #server_name test.flask.com; #nginx访问日志,路径自行设置 access_log /home/work/logs/nginx/access_mlang_log main; location / { try_files $uri @mlang; } location @mlang { internal; proxy_pass http://x.x.x.x:5000; proxy_connect_timeout 30s; proxy_send_timeout 120; proxy_read_timeout 120; proxy_buffer_size 32k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_redirect off; proxy_hide_header Vary; proxy_set_header Accept-Encoding ''; proxy_set_header Host $host; proxy_set_header Referer $http_referer; proxy_set_header Cookie $http_cookie; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } #注意:http://x.x.x.x:5000 替换为flask的访问地址启动nginx
1 2
cd nginx/sbin ./nginx
访问
1 2
#比如:nginx服务器地址未1.2.3.4 浏览器访问:http://1.2.3.4:8080