Nginx的特性功能-反向代理、负载均衡、缓存、动静分离、平滑升级
反向代理
nginx配置文件
events { } 事件驱动
httpd { } 关于httpd相关的配置
server { } 定义虚拟主机
location { } URI的访问属性
location ~*\.php$ { 做正则表达式,所有以.php结尾的文件
fastcgi_pass 127.0.0.1:9000 反向代理,去127.0.0.1:9000这个地方请求需要的数据
}
反向代理:
proxy_pass :这个选项直接指定一个反向代理
proxy_set_header :将用户请求转发至后端服务器时,可以设定一个独特的头部!
负载均衡
upstream webserver { 定义服务器组的名称 负载均衡选项要定义在server模块之外
ip_hash; 将来自于同一个客户端的请求,始终定向到同一个服务器
server 192.168.2.129 weight=1 max_fails=2 fail_timeout=2;
选定一个内部服务器 权重为1 最多错误几次 每次检查持续时间
server 192.168.2.128 weight=1 max_fails=2 fail_timeout=2;
server 127.0.0.1:8080 backup; }
当上面服务器全部挂掉时,出现这个页面!
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://webserver/; 反向代理,这里要改为upstream组名,指的是反向代理这个组中的所有成员!
}
}
重新定义一个server,设定,当我们的服务器全部挂掉时,出现这个页面。
定义完server后,在upstream模块中添加上这个服务器!
server {
listen 8080;
server_name localhost;
root /www/a.org;
index index.html;
}
nginx支持三种负载均衡算法:
round-robin :加权,个!第一个级别1个字符,第二个级别2个字符。。。。
keys_zone 存储键的区域,区域大小
max_size 缓存目录大小
格式:proxy_cache_path /ngnx/hun levels=1:2:1 keys_zone=fst:20m max_size=1G;
缓存目录 缓存
cache_manager :根据最近最少使用算法,将那些此前没有用的缓存给他清除出去。
定义完缓存,还需要在location模块中启用它,proxy_cache 缓存名,这里的缓存名就是keys_zone中定义的名字
另外的三种缓存:
open_log_cache :日志缓存
open_file_cache
fastcgi_cache
动静分离
webDAV :一种基于HTTP1.1协议的通信协议,他扩展了HTTP1.1,使应用程序可直接对web server 直接读写,并支持文件锁定及解锁,支持文件的版本控制
#动态页面交给http://tdt_wugk,也即我们之前在nginx.conf定义的upstream tdt_wugk 均衡
location ~ .*\.(php|jsp|cgi)?$
{
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://tdt_wugk;
}
#配置Nginx动静分离,定义的静态页面直接从Nginx发布目录读取。
location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|txt|js|css)$
{
root /data/www/wugk;
#expires定义用户浏览器缓存的时间为3天,如果静态页面不常更新,可以设置更长,这样可以节省带宽和缓解服务器的压力
expires 3d;
}
平滑升级
Nginx方便地帮助我们实现了平滑升级。其原理简单概括,就是:
(1)在不停掉老进程的情况下,启动新进程。
(2)老进程负责处理仍然没有处理完的请求,但不再接受处理请求。
(3)新进程接受新请求。
(4)老进程处理完所有请求,关闭所有连接后,停止。
操作步骤:
1、使用nginx -V 查看旧版本./configure的选项
2、使用旧版本的./configure的选项编译新版本,编译时不能make install
3、编译完成之后,把旧版本的可执行文件备份或者改名,
4、新版本编译完成之后,在解压包目录中objects文件夹下有新版本的可执行文件,把它复制到旧版本可执行文件的文件路径下。
5、测试新版本nginx是否正常,使用新版本的可执行文件 nginx -t -c nginx的主配置文件
6、在新版本nginx的解压目录下执行命令升级:make upgrade
7、升级之后使用:nginx -v查看版本信息。
Nginx的特性功能-反向代理、负载均衡、缓存、动静分离、平滑升级的更多相关文章
- 项目实战2.2—nginx 反向代理负载均衡、动静分离和缓存的实现
实验一:实现反向代理负载均衡且动静分离 1.环境准备: 机器名称 IP配置 服务角色 备注 nginx VIP:172.17.11.11 反向代理服务器 开启代理功能 设置监控,调度 rs01 RIP ...
- 项目实战2.1—nginx 反向代理负载均衡、动静分离和缓存的实现
总项目流程图,详见 http://www.cnblogs.com/along21/p/8000812.html 实验一:实现反向代理负载均衡且动静分离 1.环境准备: 机器名称 IP配置 服务角色 备 ...
- 项目实战02:nginx 反向代理负载均衡、动静分离和缓存的实现
目录 实验一:实现反向代理负载均衡且动静分离 1.环境准备: 2.下载编译安装tengine 3.设置代理服务器的配置文件 4.启动tengine服务 5.开启后端的web服务 6.测试 实验二:ng ...
- 001/Nginx高可用模式下的负载均衡与动静分离(笔记)
Nginx高可用模式下的负载均衡与动静分离 Nginx(engine x)是一个高性能的HTTP和反向代理服务器,具有内存少,并发能力强特点. 1.处理静态文件.索引文件以及自动索引:打开文件描述符缓 ...
- Nginx特性验证-反向代理/负载均衡/页面缓存/URL重定向
原文发表于cu:2016-08-25 参考文档: Nginx 反向代理.负载均衡.页面缓存.URL重写等:http://freeloda.blog.51cto.com/2033581/1288553 ...
- 【05】Nginx:TCP / 正向 / 反向代理 / 负载均衡
写在前面的话 在我们日常的工作中,不可能所有的服务都是简单的 HTML 静态网页,nginx 作为轻量级的 WEB 服务器,其实我们将它用于更多的地方还是作为我们网站的入口.不管你是后端接口,还是前端 ...
- Nginx加多个tomcat实现负载均衡,动静分离
一:Nginx+Tomcat的动静分离 所谓动静分离就是通过nginx(或apache等)来处理用户端请求的图片.html等静态的文件,tomcat(或weblogic)处理jsp.do等动态文件,从 ...
- nginx之rewrite重写,反向代理,负载均衡
rewrite重写(伪静态): 在地址栏输入xx.com/user-xxx.html, 实际上访问的就是xxx.com/user.php?id=xxx rewrite就这么简单 附上ecshop re ...
- 如何使用Weave以及Docker搭建Nginx反向代理/负载均衡服务器
Hi, 今天我们将会学习如何使用 Weave 和 Docker 搭建 Nginx 的反向代理/负载均衡服务器.Weave 可以创建一个虚拟网络将 Docker 容器彼此连接在一起,支持跨主机部署及自动 ...
随机推荐
- SQL 变形
需求:共有协议X份,已签XX份,待签X份 sql: select count(1) 总记录数, sum(case when XY_STATUS='1' then 1 else 0 end)待签, su ...
- 使用PostMan进行压力/性能测试
1. 2. 3. 4.查看结果/导出结果
- Perl 使用perl命令批量替换文件内容
对linux系统下面多个文本文件内容做处理,是SA经常需要完成的工作.如何高效的完成这个工作,perl应该是一个不错的语言工具.你甚至不需要编写perl脚本,用命令就可以完成上面的工作. perl 命 ...
- 写代码注意了,打死都不要用 User 这个单词
阅读本文大概需要 4 分钟. 原文:http://t.cn/Eau2d0h 译文:http://21cto.com/article/2093 当你意识到你在项目开始时做的轻量.简单的设想竟然完全错了时 ...
- 【Gamma阶段】第九次Scrum Meeting
冰多多团队-Gamma阶段第九次Scrum会议 工作情况 团队成员 已完成任务 待完成任务 卓培锦 美化前端及编辑器界面,编辑器风格切换(添加夜间模式) UI界面手势切换 牛雅哲 添加scp工具,添加 ...
- [Gamma]Scrum Meeting#5
github 本次会议项目由PM召开,时间为5月30日晚上10点30分 时长15分钟 任务表格 人员 昨日工作 下一步工作 木鬼 撰写博客,组织例会 撰写博客,组织例会 swoip 前端显示屏幕,翻译 ...
- 作业15-JDBC数据库编程
参考资料 本次作业参考文件 MySQL操作视频 数据库相关jar文件请参考QQ群文件. 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结与数据库相关内容. 2. 使用数据库技术改造 ...
- Shell脚本之七 选择、循环结构
一.if else if 语法格式 if condition then command1 command2 ... commandN fi 写成一行(适用于终端命令提示符): if [ $(ps -e ...
- Python3多进程共享变量实现方法
今天同事反映一个问题让帮忙看一下:多进程共用一个变量,在一个进程中修改后,在另外的进程中并没有产生修改. 一.错误的实现方式 最初以为是没添加global声明导致修改未生效,但实际操作发现global ...
- mysql—增删改查
MySQL数据库,每条命令后要加:号.不然会认为命令语句未输入完, 若在语句结尾不添加分号时, 命令提示符会以 -> 提示你继续输入(有个别特例, 但加分号是一定不会错的); show data ...