温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Nginx 实现静态资源

发布时间:2020-02-29 00:47:01 来源:网络 阅读:1626 作者:JasonMingHao 栏目:系统运维

前言
nginx作为一款高性能的服务器,用途非常多,除了可以做后端服务器的代理,负载均衡之外,还有一个用途就是做静态资源的缓存服务器,比如在前后端分离的项目中,为了加速前端页面的响应速度,我们可以将前端的相关资源,例如html,js,css或者图片等放到nginx指定的目录下,访问的时候只需要通过IP加路径就可以实现高效快速的访问,

1、基础环境

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-ULDbQ5FEhlfZchWH9Q

[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:

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应用
首先,我们需要在web01中部署Flask应用,然后把flask-demo目录下的/static目录给删除,最后在用flask-demo自带的启动脚本来启动flask进程

1.将flask-demo移动至/data目录下

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

2.删除或移动/static/静态目录

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

3.启动flask进程(一定要先进到flask-demo目录)

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

4.访问当前机器5000端口的两个url,我们会发现这两个静态资源是不存在的
Nginx 实现静态资源

3、部署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 实现静态资源

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI