前言
nginx做爲一款高性能的服務器,用途很是多,除了能夠作後端服務器的代理,負載均衡以外,還有一個用途就是作靜態資源的緩存服務器
,好比在先後端分離
的項目中,爲了加速前端頁面的響應速度,咱們能夠將前端的相關資源,例如html,js,css或者圖片等放到nginx指定的目錄下,訪問的時候只須要經過IP加路徑就能夠實現高效快速的訪問,css
一、基礎環境html
1.機器規劃前端
hostname | ip | role |
---|---|---|
web01 | 10.0.0.7 | flask進程(端口5000) |
lb01 | 10.0.0.5 | 提供Nginx靜態資源訪問和反向代理 |
2.我本身寫了一個基於flask_restful的flask小項目,目錄結構爲
flask-demo:https://pan.baidu.com/s/1PMx-ULDbQ5FEhlfZchWH9Qpython
[root@web01 ~]# tree flask-demo flask-demo ├── app │ ├── api # 接口文件 │ │ ├── base.py │ │ ├── home.py │ │ └── web_html.py │ ├── __init__.py │ ├── libs # 工具函數 │ │ ├── commons.py │ │ └── const.py │ └── static # 靜態資源 │ ├── html │ │ ├── home.html │ │ └── index.html │ ├── img │ │ └── t1.jpg │ └── js │ └── jquery-3.4.1.min.js ├── flask_manage.sh # flask啓動腳本 ├── manage.py └── settings.py # flask配置文件
可訪問的Url:jquery
127.0.0.1:5000/index.html 127.0.0.1:5000/home.html
安裝python版本以及模塊nginx
python3.6 pop3 // 模塊(版本影響不大) flask flask_sqlalchemy flask_restful flask_session flask_wtf flask_script flask_migrate
二、部署Flask應用
首先,咱們須要在web01中部署Flask應用,而後把flask-demo目錄下的/static目錄給刪除,最後在用flask-demo自帶的啓動腳原本啓動flask進程web
1.將flask-demo移動至/data
目錄下sql
$ mkdir /data $ mv flask-demo /data/
2.刪除或移動/static/
靜態目錄flask
mv flask-demo/app/static/ /tmp/
3.啓動flask進程(必定要先進到flask-demo目錄)後端
$ cd /data/flask-demo $ sh flask_manage.sh start
4.訪問當前機器5000端口的兩個url,咱們會發現這兩個靜態資源是不存在的
三、部署Nginx靜態資源代理
1.安裝nginx
$ yum install nginx
2.將flask-demo
壓縮包上傳到lb01並解壓,而後將/statis
靜態資源移動到/data
目錄
$ mkdir /data $ tar xf flask-demo.tar.gz $ cp -r flask-demo/app/static/ /data/ // 查看靜態資源文件 /data/ └── static ├── html │ ├── home.html │ └── index.html ├── img │ └── t1.jpg └── js └── jquery-3.4.1.min.js
3.nginx配置文件
user www; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; keepalive_timeout 65; upstream blog_server_pools { ip_hash; server 10.0.0.7:5000 weight=1; } server { listen 80; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header host $host; location /api { proxy_pass http://blog_server_pools; } location / { alias /data/static/html/; } location /static { alias '/data/static'; } } }
啓動nginx
$ nginx
4.瀏覽器訪問lb01代理