Nginx 實現靜態資源

前言
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 實現靜態資源

三、部署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代理

Nginx 實現靜態資源

Nginx 實現靜態資源

相關文章
相關標籤/搜索