Introduction

  Flask提供web应用框架,实现数据接口;Nginx实现反向代理功能,对外提供访问服务。

  • Flask安装及demo实现
  • Nginx反向代理实现

Flask安装及demo实现

  • 安装virtaulenv

    1
    
    sudo pip install virtualenv

  why使用env虚拟环境:(为每个项目提供独立的环境,避免不同版本的python兼容问题)说明文档

  • 启动env环境

    1
    2
    
    进入env安装目录:cd env/bin
    启动:. activate
  • 安装Flask

    1
    
    pip 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. 提高访问速度

    由于目标主机返回的数据会存放在代理服务器的硬盘中,因此下一次客户再访问相同的站点数据时,会直接从代理服务器的硬盘中读取,起到了缓存的作用,尤其对于热门站点能明显提高请求速度。

    1. 防火墙作用

    由于所有的客户机请求都必须通过代理服务器访问远程站点,因此可在代理服务器上设限,过滤某些不安全信息。

    1. 通过代理服务器访问不能访问的目标站点

    互联网上有许多开发的代理服务器,客户机在访问受限时,可通过不受限的代理服务器访问目标站点,通俗说,我们使用的翻墙浏览器就是利用了代理服务器,虽然不能出国,但也可直接访问外网。

  • 安装

    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