网站首页 > 技术教程 正文
反向代理
反向代理可以理解为客服端和服务端沟通经过一个代理,代理来分发请求
Nginx通常被用作后端服务器的反向代理,这样就可以很方便的实现动静分离,以及负载均衡,从而大大提高服务器的处理能力。
常用配置
或
第二种配置方式用了upstream,可以为之后负载均衡做准备
动静分离
动静分离,动态内容如php,jsp的页面必须由服务端动态处理,就转发到tomcat之类的容器,静态内容如图片,html就直接访问文件
Nginx实现动静分离,其实就是在反向队里的时候,如果是静态资源,那么就直接从Nginx发布的路径去读取,而不需要从后台服务器后去了
注意:这种情况下需要保证后端跟前端的程序保持一致,可以Rsync做服务端自动同步或者使用NFS、MFS分布式共享存储
如:
匹配jpg|jpeg|gif|png|swf|ico后缀的文件就直接在root的路径找
负载均衡
Nginx通过upstream模块来实现简单的负载均衡
常用指令
ip_hash
语法:ip_hash
默认值:none
使用字段:upstream
这个指令将基于客户端连接的IP地址来分发请求。
哈希的关键字是客户端的C类网络地址,这个功能将保证这个客户端请求总是被转发到一台服务器上,但是如果这台服务器不可用,那么请求将转发到另外的服务器上,这将保证某个客户端有很大概率总是连接到一台服务器。
无法将权重(weight)与ip_hash联合使用来分发连接。如果有某台服务器不可用,你必须标记其为“down”,如下例:
注意:即使是由同一台机子发出的请求也不一定访问到同一个服务器,可能这台机子也使用了代理,使ip发生变化,或者访问的服务器down掉了
server
语法:server name [parameters]
默认值:none
使用字段:upstream
指定后端服务器的名称和一些参数,可以使用域名,IP,端口,或者unix socket。如果指定为域名,则首先将其解析为IP。
weight = NUMBER - 设置服务器权重,默认为1。
max_fails = NUMBER - 在一定时间内(这个时间在fail_timeout参数中设置)检查这个服务器是否可用时产生的最多失败请求数,默认为1,将其设置为0可以关闭检查,这些错误在proxy_next_upstream或fastcgi_next_upstream(404错误不会使max_fails增加)中定义。
fail_timeout = TIME - 在这个时间内产生了max_fails所设置大小的失败尝试连接请求后这个服务器可能不可用,同样它指定了服务器不可用的时间(在下一次尝试连接请求发起之前),默认为10秒,fail_timeout与前端响应时间没有直接关系,不过可以使用proxy_connect_timeout和proxy_read_timeout来控制。
down - 标记服务器处于离线状态,通常和ip_hash一起使用。
backup - (0.6.7或更高)如果所有的非备份服务器都宕机或繁忙,则使用本服务器(无法和ip_hash指令搭配使用)。
示例配置
注意:如果你只使用一台上游服务器,nginx将设置一个内置变量为1,即max_fails和fail_timeout参数不会被处理。
结果:如果nginx不能连接到上游,请求将丢失。
解决:使用多台上游服务器。
upstream
语法:upstream name { … }
默认值:none
使用字段:http
这个字段设置一群服务器,可以将这个字段放在proxy_pass和fastcgi_pass指令中作为一个单独的实体,它们可以可以是监听不同端口的服务器,并且也可以是同时监听TCP和Unix socket的服务器。
服务器可以指定不同的权重,默认为1。
示例配置
请求将按照轮询的方式分发到后端服务器,但同时也会考虑权重。
在上面的例子中如果每次发生7个请求,5个请求将被发送到backend1.example.com,其他两台将分别得到一个请求,如果有一台服务器不可用,那么请求将被转发到下一台服务器,直到所有的服务器检查都通过。如果所有的服务器都无法通过检查,那么将返回给客户端最后一台工作的服务器产生的结果。
Geo和GeoIP模块
这两个模块主要用于做全局的负载均衡,可以根据不同的客户端来访问不同的服务器,示例如下
猜你喜欢
- 2024-10-11 Python运维:Nginx作为七层负载均衡调度器
- 2024-10-11 nginx的反向代理(nginx的反向代理模块是啥)
- 2024-10-11 Nginx学习笔记(14) 用于定义上游服务的upstream模块
- 2024-10-11 入口网关服务发现-Openresty动态upstream
- 2024-10-11 nginx可以集群吗(nginx集群 并绑定一个ip)
- 2024-10-11 nginx的upstream目前支持5种方式的分配
- 2024-09-21 详解:Nginx 反向代理、后端检测模块
- 2024-09-21 Nginx反向代理相关设置(基于linux)
- 2024-09-21 简单练习Nginx反向代理和负载均衡
- 2024-09-21 nginx upstream header过大问题解决
你 发表评论:
欢迎- 最近发表
-
- Linux新手必看:几种方法帮你查看CPU核心数量
- linux基础命令之lscpu命令(linux中ls命令的用法)
- Linux lscpu 命令使用详解(linux常用ls命令)
- 如何查询 Linux 中 CPU 的数量?这几个命令要知道!
- 在linux上怎么查看cpu信息(linux如何查看cpu信息)
- 查看 CPU 的命令和磁盘 IO 的命令
- 如何在CentOS7上改变网卡名(centos怎么改网卡名字)
- 网工必备Linux网络管理命令(网工必备linux网络管理命令是什么)
- Linux 网络命令知多少(linux 网络 命令)
- Linux通过命令行连接wifi的方式(linux命令行连接无线网)
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)