一、为什么要进行动静分离

分离资源,减少不必要到的请求消耗,减少请求延时。

注:我这里,是nginx处理静态资源,apache处理动态资源。

场景分析:

1、未分离之前的场景步骤

(1)客户端请求url到中间件(比如nginx,apache)

(2)中间件根据url请求相应目录,程序框架

(3)程序框架运行程序逻辑

(4)程序逻辑请求相应数据资源

(5)将数据资源返回给客户端

注:其实,静态资源是不需要经过动态请求,直接中间件返回给客户端就可以了。也就是说只要第1步和第5步就可以了

配置文件展示:

upstream php_api{#代理请求到本地apache服务器,实现动静分离(这里我将apache默认端口更改为81)server 127.0.0.1:81;
}
server {listen       80;server_name  www.xiaobudiu.top;access_log  /etc/nginx/logs/access/www.xiabudiu.top.access.log  main;root /data/www;location ~ \.php$ {#如果网站访问的url后缀是.php,则代理使用apache进行解析proxy_pass http://php_api;index  index.html index.htm;}#如果请求的是静态资源,则默认使用nginx进行处理location ~ \.(jpg|png|gif)$ {expires 1h;gzip on;}location /{index  index.html index.htm;}# redirect server error pages to the static page /50x.html#error_page   500 502 503 504 404 403  /404.html;location = /404.html {root   /data/errorPage;}location ~ /\.ht {deny  all;}
}

或者是这样:

upstream image {server  192.168.0.3:80;server  192.168.0.4:80;
}upstream php {server  192.168.0.5:80;server  192.168.0.6:80;
}server {listen       80;server_name  www.xiaobudiu.top;access_log  /etc/nginx/logs/access/www.xiabudiu.top.access.log  main;location  /{#如果uri后缀不是.php或是图片后缀,就走本地服务器进行处理root data/www;index  index.php index.html;}location ~* \.php$ {#如果是.php结尾,反向代理到upstream php组里进行轮询proxy_pass  http://php;}location ~* "\.(.jpg|png|jpeg|gif)" {#如果是.jpg,.png,.jpeg,.gif结尾,反向代理到upstream image组里进行轮询proxy_pass http://image;}# redirect server error pages to the static page /404.htmlerror_page   500 502 503 504 404 403  /404.html;location = /404.html {root   /data/errorPage;}location ~ /\.ht {deny  all;}}

注:这是在子配置文件中进行的定义,比如,上面编辑的就是/etc/nginx/conf.d/www.xiaobudiu.top.conf 文件

当然,由于nginx对代理有一定要求,所以,在nginx.conf中也要进行一定的定义,比如这样:

nginx.conf

user  nginx;
worker_processes  1;
worker_rlimit_nofile 65536;error_log  /etc/nginx/logs/error/error.log warn;
pid        /var/run/nginx.pid;events {worker_connections  1024;multi_accept on;use epoll;
}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  /etc/nginx/logs/access/access.log  main;sendfile        on;#tcp_nopush     on;keepalive_timeout  65;client_max_body_size 20m;gzip  on;gzip_proxied any;gzip_comp_level 3;gzip_min_length 1k;gzip_buffers 16 32k;gzip_http_version 1.0;gzip_types text/plain text/css application/json application/xml+rss text/javascript image/jpeg image/gif image/png;fastcgi_buffers 256 16k;fastcgi_buffer_size 128k;fastcgi_connect_timeout 3s;fastcgi_send_timeout 120s;fastcgi_read_timeout 120s;reset_timedout_connection on;server_names_hash_bucket_size 100;include /etc/nginx/conf.d/*.conf;}

最后,需要说明的是,上述配置文件只是为了说明反向代理和负载均衡是如何实现的,并没有结合实际项目。

注:nginx 官方proxy模块文档 http://nginx.org/en/docs/http/ngx_http_proxy_module.html

注:负载均衡中多态服务器间的数据同步这里采用rsync,当然,还有其他方式。可参考:

https://www.cnblogs.com/miclesvic/p/6189540.html

Nginx使用upstream实现动静分离相关推荐

  1. Nginx+Keepalived+Tomcat之动静分离的web集群

                 为小公司提供大概一天持续在100万/日之间访问的高性能.高可用.高并发访问及动静分离的web集群方案 Nginx+Keepalived            高可用.反向代理 ...

  2. Nginx负载均衡与动静分离

    文章目录 反向代理与负载均衡 nginx动静分离实验 在nginx主机上配置负载均衡 在nginx主机上配置动静分离 反向代理与负载均衡 nginx通常被用作后端服务器的反向代理,这样就可以很方便的实 ...

  3. Nginx-07:Nginx配置实例之动静分离

    Nginx配置实例之动静分离 1.动静分离概念 2.准备工作 image和www放静态资源. 3.具体配置 (1)在nginx的config中配置 autoindex on:列出当前文件夹中的文件 4 ...

  4. Nginx反向代理、动静分离、负载均衡及rewrite隐藏路径详解(Nginx Apache MySQL Redis)–第二部分...

    Nginx反向代理.动静分离.负载均衡及rewrite隐藏路径详解 (Nginx Apache MySQL Redis) 楓城浪子原创,转载请标明出处! 更多技术博文请见个人博客:https://fe ...

  5. ↑nginx+tomcat+httpd实现动静分离↑

    ↑nginx+tomcat+httpd实现动静分离↑ 2013-10-01 16:39:54 标签:tomcat动静分离 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本 ...

  6. 使用Nginx负载均衡及动静分离

    使用Nginx负载均衡及动静分离 目录 使用Nginx负载均衡及动静分离 一.系统拓扑图 二.环境准备 三.服务器安装 1.jdk,tomcat,mysql 2.Nginx的安装 2.1 gcc安装 ...

  7. Nginx 反向代理、动静分离、负载均衡及配置实例

    文章目录 Nginx 代理 正向代理 反向代理 配置实例 动静分离 概念 配置实例 负载均衡 概念 分配策略 配置实例 Nginx Nginx ("engine x") 是一个高性 ...

  8. Nginx的应用之动静分离

    Nginx 的动静分离 我们通过中间件将动态请求和静态请求进行分离,减少了不必要的请求消耗和延时. 动静分离后,即使动态服务不可用,但静态资源不会受到影响. 应用实例 1.准备环境 系统 角色 主机名 ...

  9. 使用nginx作为代理实现动静分离

    客户端访问http://bbs.upl.com --> 解析到 nginx_proxy 172.16.2.8 nginx_proxy作为反向代理,实现动静分离:     如果是已知的静态页面请求 ...

最新文章

  1. 网站在线访问人数统计并计算停留时间
  2. 2020年中国医疗数据中心市场规模及发展趋势预测分析
  3. 人工智能:一种现代方法汇总
  4. 《How Tomcat Works》读书笔记(三)Connector
  5. 读写自旋锁详解:TODO
  6. 夺命雷公狗---微信开发09----玩转单图文消息回复
  7. 空气培养皿采样后保存_六级撞击式微生物采样器是什么?用途有哪些?
  8. 用PHP玩百万英雄类型游戏!!!
  9. 状态压缩DP-棋盘模型总结
  10. 【目标定位】基于matlab扩展卡尔曼滤波目标定位仿真【含Matlab源码 128期】
  11. 阿铭Linux_网站维护学习笔记20190417
  12. jzxx1105 【入门】字符图形4-星号正三角
  13. JSONObject 与 JSON 互转
  14. Vue和ElementUI第二天
  15. java文件上传过滤,struts2中文件上传过滤
  16. vue 修改地址栏参数
  17. SQL数据查询——单表查询(二)
  18. 即时通讯视频聊天代码和技术架构
  19. 24时区来源,CST,CET,UTC,DST,Unix时间戳概述、关系、转换
  20. 查看服务器总的物理内存

热门文章

  1. NO.106 需求的状态、研发阶段及注意事项。
  2. ASP.NET MVC 上传大文件时404
  3. Windows下MinGW编译vim7.4
  4. 批处理解决局域网共享打印机问题
  5. 卸载重新安装Sql Server 2005出现“性能监视器计数器要求”错误解决方法【转】...
  6. 手把手教你学Dapr - 1. .Net开发者的大时代
  7. .NET 6 中的HTTP 3支持
  8. Magicodes.IE之快速导出Excel
  9. Hello Blazor:(2)集成Tailwind CSS
  10. docker registry 镜像同步