十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
前言
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,我们会发现这两个静态资源是不存在的
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代理