前言
Nginx作为一款高性能的服务器,用途非常多,除了可以做后端服务器的代理,负载均衡之外,还有一个用途就是做静态资源的缓存服务器,比如在前后端分离的项目中,为了加速前端页面的响应速度,我们可以将前端的相关资源,例如html,js,css或者图片等放到nginx指定的目录下,访问的时候只需要通过IP加路径就可以实现高效快速的访问,
1、基础环境
1.机器规划
hostnameiproleweb0110.0.0.7flask进程(端口5000)lb0110.0.0.5提供Nginx静态资源访问和反向代理
2.我自己写了一个基于flask_restful的flask小项目,目录结构为
[root@web01 ~]# tree flask-demoflask-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配置文件
127.0.0.1:5000/index.html127.0.0.1:5000/home.html
Python3.6pop3// 模块(版本影响不大)flaskflask_sqlalchemyflask_restfulflask_sessionflask_wtfflask_scriptflask_migrate
2、部署Flask应用
首先,我们需要在web01中部署Flask应用,然后把flask-demo目录下的/static目录给删除,最后在用flask-demo自带的启动脚本来启动flask进程
1.将flask-demo移动至/data目录下
$ mkdir /data$ mv flask-demo /data/
2.删除或移动/static/静态目录
mvflask-demo/app/static/ /tmp/
3.启动flask进程(一定要先进到flask-demo目录)
$ cd /data/flask-demo$ sh flask_manage.shstart
4.访问当前机器5000端口的两个url,我们会发现这两个静态资源是不存在的
文章插图
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配置文件userwww;worker_processes1;error_log/var/log/nginx/error.log warn;pid/var/run/nginx.pid;events {worker_connections1024;}http {include/etc/nginx/mime.types;default_typeapplication/octet-stream;log_formatmain'$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.logmain;sendfileon;keepalive_timeout65;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 实现静态资源】
推荐阅读
- 真的够可以的,基于Netty实现了RPC框架
- OAuth2+JWT 实现权限验证
- 不爱跳槽的程序员集中在8-17k,揭晓中国开发者的真实现状
- 堆和二叉堆的实现和特性
- 芯片加密技术是什么?如何实现芯片加密
- 开发人员如何快速定制化实现一个基于Solr的搜索引擎
- 你的摄像头可能被入侵!教你用Python实现窃取摄像头照片
- 干货!如何实现一个分布式定时器
- Java静态内部类、匿名内部类、成员式内部类和局部内部类
- 一篇文章读透nginx源码