Nginx使用upstream实现动静分离
一、为什么要进行动静分离
分离资源,减少不必要到的请求消耗,减少请求延时。
注:我这里,是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实现动静分离相关推荐
- Nginx+Keepalived+Tomcat之动静分离的web集群
为小公司提供大概一天持续在100万/日之间访问的高性能.高可用.高并发访问及动静分离的web集群方案 Nginx+Keepalived 高可用.反向代理 ...
- Nginx负载均衡与动静分离
文章目录 反向代理与负载均衡 nginx动静分离实验 在nginx主机上配置负载均衡 在nginx主机上配置动静分离 反向代理与负载均衡 nginx通常被用作后端服务器的反向代理,这样就可以很方便的实 ...
- Nginx-07:Nginx配置实例之动静分离
Nginx配置实例之动静分离 1.动静分离概念 2.准备工作 image和www放静态资源. 3.具体配置 (1)在nginx的config中配置 autoindex on:列出当前文件夹中的文件 4 ...
- Nginx反向代理、动静分离、负载均衡及rewrite隐藏路径详解(Nginx Apache MySQL Redis)–第二部分...
Nginx反向代理.动静分离.负载均衡及rewrite隐藏路径详解 (Nginx Apache MySQL Redis) 楓城浪子原创,转载请标明出处! 更多技术博文请见个人博客:https://fe ...
- ↑nginx+tomcat+httpd实现动静分离↑
↑nginx+tomcat+httpd实现动静分离↑ 2013-10-01 16:39:54 标签:tomcat动静分离 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本 ...
- 使用Nginx负载均衡及动静分离
使用Nginx负载均衡及动静分离 目录 使用Nginx负载均衡及动静分离 一.系统拓扑图 二.环境准备 三.服务器安装 1.jdk,tomcat,mysql 2.Nginx的安装 2.1 gcc安装 ...
- Nginx 反向代理、动静分离、负载均衡及配置实例
文章目录 Nginx 代理 正向代理 反向代理 配置实例 动静分离 概念 配置实例 负载均衡 概念 分配策略 配置实例 Nginx Nginx ("engine x") 是一个高性 ...
- Nginx的应用之动静分离
Nginx 的动静分离 我们通过中间件将动态请求和静态请求进行分离,减少了不必要的请求消耗和延时. 动静分离后,即使动态服务不可用,但静态资源不会受到影响. 应用实例 1.准备环境 系统 角色 主机名 ...
- 使用nginx作为代理实现动静分离
客户端访问http://bbs.upl.com --> 解析到 nginx_proxy 172.16.2.8 nginx_proxy作为反向代理,实现动静分离: 如果是已知的静态页面请求 ...
最新文章
- 网站在线访问人数统计并计算停留时间
- 2020年中国医疗数据中心市场规模及发展趋势预测分析
- 人工智能:一种现代方法汇总
- 《How Tomcat Works》读书笔记(三)Connector
- 读写自旋锁详解:TODO
- 夺命雷公狗---微信开发09----玩转单图文消息回复
- 空气培养皿采样后保存_六级撞击式微生物采样器是什么?用途有哪些?
- 用PHP玩百万英雄类型游戏!!!
- 状态压缩DP-棋盘模型总结
- 【目标定位】基于matlab扩展卡尔曼滤波目标定位仿真【含Matlab源码 128期】
- 阿铭Linux_网站维护学习笔记20190417
- jzxx1105 【入门】字符图形4-星号正三角
- JSONObject 与 JSON 互转
- Vue和ElementUI第二天
- java文件上传过滤,struts2中文件上传过滤
- vue 修改地址栏参数
- SQL数据查询——单表查询(二)
- 即时通讯视频聊天代码和技术架构
- 24时区来源,CST,CET,UTC,DST,Unix时间戳概述、关系、转换
- 查看服务器总的物理内存
热门文章
- NO.106 需求的状态、研发阶段及注意事项。
- ASP.NET MVC 上传大文件时404
- Windows下MinGW编译vim7.4
- 批处理解决局域网共享打印机问题
- 卸载重新安装Sql Server 2005出现“性能监视器计数器要求”错误解决方法【转】...
- 手把手教你学Dapr - 1. .Net开发者的大时代
- .NET 6 中的HTTP 3支持
- Magicodes.IE之快速导出Excel
- Hello Blazor:(2)集成Tailwind CSS
- docker registry 镜像同步