溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Nginx 實(shí)現(xiàn)靜態(tài)資源

發(fā)布時(shí)間:2020-02-29 00:47:01 來源:網(wǎng)絡(luò) 閱讀:1651 作者:JasonMingHao 欄目:系統(tǒng)運(yùn)維

前言
nginx作為一款高性能的服務(wù)器,用途非常多,除了可以做后端服務(wù)器的代理,負(fù)載均衡之外,還有一個(gè)用途就是做靜態(tài)資源的緩存服務(wù)器,比如在前后端分離的項(xiàng)目中,為了加速前端頁面的響應(yīng)速度,我們可以將前端的相關(guān)資源,例如html,js,css或者圖片等放到nginx指定的目錄下,訪問的時(shí)候只需要通過IP加路徑就可以實(shí)現(xiàn)高效快速的訪問,

1、基礎(chǔ)環(huán)境

1.機(jī)器規(guī)劃

hostname ip role
web01 10.0.0.7 flask進(jìn)程(端口5000)
lb01 10.0.0.5 提供Nginx靜態(tài)資源訪問和反向代理

2.我自己寫了一個(gè)基于flask_restful的flask小項(xiàng)目,目錄結(jié)構(gòu)為
flask-demo:https://pan.baidu.com/s/1PMx-ULDbQ5FEhlfZchWH9Q

[root@web01 ~]# tree flask-demo
flask-demo
├── app 
│?? ├── api   # 接口文件
│?? │?? ├── base.py
│?? │?? ├── home.py
│?? │?? └── web_html.py
│?? ├── __init__.py
│?? ├── libs     # 工具函數(shù)
│?? │?? ├── commons.py
│?? │?? └── const.py
│?? └── static   # 靜態(tài)資源
│??     ├── html
│??     │?? ├── home.html
│??     │?? └── index.html
│??     ├── img
│??     │?? └── t1.jpg
│??     └── js
│??         └── jquery-3.4.1.min.js
├── flask_manage.sh  # flask啟動(dòng)腳本
├── manage.py  
└── settings.py # flask配置文件

可訪問的Url:

127.0.0.1:5000/index.html
127.0.0.1:5000/home.html

安裝python版本以及模塊

python3.6
pop3

// 模塊(版本影響不大)
flask
flask_sqlalchemy
flask_restful
flask_session
flask_wtf
flask_script
flask_migrate

2、部署Flask應(yīng)用
首先,我們需要在web01中部署Flask應(yīng)用,然后把flask-demo目錄下的/static目錄給刪除,最后在用flask-demo自帶的啟動(dòng)腳本來啟動(dòng)flask進(jìn)程

1.將flask-demo移動(dòng)至/data目錄下

$ mkdir /data
$ mv flask-demo /data/

2.刪除或移動(dòng)/static/靜態(tài)目錄

mv  flask-demo/app/static/ /tmp/

3.啟動(dòng)flask進(jìn)程(一定要先進(jìn)到flask-demo目錄)

$ cd /data/flask-demo
$ sh flask_manage.sh  start

4.訪問當(dāng)前機(jī)器5000端口的兩個(gè)url,我們會發(fā)現(xiàn)這兩個(gè)靜態(tài)資源是不存在的
Nginx 實(shí)現(xiàn)靜態(tài)資源

3、部署Nginx靜態(tài)資源代理
1.安裝nginx

$ yum install nginx

2.將flask-demo壓縮包上傳到lb01并解壓,然后將/statis靜態(tài)資源移動(dòng)到/data目錄

$ mkdir /data
$ tar xf flask-demo.tar.gz
$ cp -r flask-demo/app/static/ /data/

// 查看靜態(tài)資源文件
/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';
               }
    }
}

啟動(dòng)nginx

$ nginx

4.瀏覽器訪問lb01代理

Nginx 實(shí)現(xiàn)靜態(tài)資源

Nginx 實(shí)現(xiàn)靜態(tài)資源

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI