前言
什么是动态资源和静态资源?
动态资源:一般指后台资源
静态资源:一般指html,js,css,img,plugins
什么是动静分离?
将静态资源部署在 Nginx 上,当接收到请求是访问静态资源时,直接在 Nginx 配置的静态资源目录下面获取静态资源。如果是动态资源,利用 Nginx 反向代理原理,将请求转发给后台应用处理,这就是动静分离。
动静分离有什么作用?
-
api 接口服务化:动静分离之后,后端应用更为服务化,只需要通过提供 api 接口即可,可以为多个功能模块甚至是多个平台的功能使用,可以有效的节省后端人力,更便于功能维护。
-
前后端开发并行:前后端只需要关心接口协议即可,各自的开发相互不干扰,并行开发,并行自测,可以有效的提高开发时间,也可以有效的减少联调时间。
-
减轻后端服务器压力,提高静态资源访问速度:后端不用再将模板渲染为html返回给用户端,且静态服务器可以采用更为专业的技术提高静态资源的访问速度。
Nginx 的并发能力公式:
worker_processes * worker_connections / 4 | 2 = Nginx最终的并发能力
动态资源需要/4,静态资源需要/2.
Nginx 通过动静分离,来提升Nginx的并发能力,更快的给用户响应。
动态资源代理
使用 proxy_pass 动态代理
# 配置如下
location / {
proxy_pass 路径;
}
静态资源代理
使用 root 静态代理
- 先修改 docker ,添加一个数据卷,映射到 Nginx 服务器的一个目录
- 添加了 index.html 和 1.jpg 静态资源
- 修改配置文件
# 配置如下
location / {
root 静态资源路径;
index 默认访问路径下的什么资源;
autoindex on; # 代表展示静态资源全的全部内容,以列表的形式展开。
}
项目是nginx.conf 配置文件的编写方式
worker_processes 1;
error_log /var/log/nginx/error.log warn;
# 以上统称为全局块,
# worker_processes 它的数值越大,Nginx的并发能力就越强
# error_log 代表Nginx的错误日志存放的位置
events {
worker_connections 1024;
}
# events块
# worker_connections他的数值越大,Nignx并发能力越强
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
upstream win {
ip_hash;
server 192.168.200.56:8080;
server 192.168.200.56:8081;
}
server {
listen 80;
server_name localhost;
location / {
root /html;
index index.html index.htm;
proxy_pass http://win/;
}
location ~* \.(gif|jpg|png)$ {
root /html/img;
}
}
}