nginx 负载均衡 proxy_pass 与 upstream 及 rewrite ,expires 的配置总结
本文为博主原创,转载请注明出处:
先查看 一段 nginx 相关的配置:
location /test/ {
set $arg_remote_addr $request_id;
proxy_pass https://self-in_slb_test_service_01;
set $resp_status "-";
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header Host $host;
proxy_next_upstream error timeout;
rewrite /copyrighttest(.*) $1 break;
expires off;
} upstream self-in_slb_test_service_01 {
server 112.118.0.154:8000 max_fails=0 fail_timeout=180 weight=1;
server 112.118.0.155:8000 max_fails=0 fail_timeout=180 weight=1;
keepalive 64;
}
根据上述的配置,分别探究 prxoy_pass与 upstream , rewrite的配置与功能
1. prxoy_pass与 upstream 配置与功能:
prxoy_pass 用来指定当前模块中请求的URL 或服务器的地址,当配置指定访问的URL 时,其配置如下:
proxy_pass http://localhost:8000/uri/;
当配置多个服务器地址时,需要配合 nginx 的 upstream 模块一起使用。upstream 为nginx 的负载均衡模块。
Nginx 实现负载均衡需要基于 upstream 模块,同时需要设置 location proxy_pass 转发指令实现。
最上面示例中的 upstream self-in_slb_test_service_01 中的 self-in_slb_test_service_01 为负载均衡的模块的名称,可以任意指定,但需要与vhosts.conf, nginx.conf 虚拟主机中的 proxy_pass 段保持一致,否则不能将请求转发到指定的后端服务器, weight 表示 权重,fail_timeout内检查 max_fails 次数,失败则剔除均衡。
2. expires 配置
expires 定义用户浏览器缓存的时间,通过 Expires 参数设置,可以使浏览器缓存过期时间,减少与服务器之前的请求和流量。具体 Expires 定义是给一个资源设定一个过期时间,也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可,所以不会产生额外的流量。如果静态页面不常更新,可以设置 指定的时间,这样可以节省带宽和缓解服务器的压力,在浏览器保存该类型文件的天数。expires off 为关闭缓存。其设置可以参考如下:
expires 3d; # 缓存3天
3. Nginx Rewrite 规则
Rewirte 规则也称为规则重写,主要功能是实现浏览器访问 HTTP URL 的跳转,其正则表达式是基于 Perl 语言。通常而言,几乎所有的 WEB 服务器均可以支持 URL 重写。
URL 规则重写的用途:
1.隐藏网站 URL 真实地址,浏览器显示更加美观;
2.网站变更升级,可以基于 Rewrite 临时重定向到其他页面。
Nginx Rewrite 规则使用中有三个概念需要理解,分别是:Rewrite 结尾标识符、Rewrite规则常用表达式、Nginx Rewrite 变量,如下为三个概念的详解:
(1)Nginx Rewrite 结尾标识符,用于 Rewrite 规则末尾,表示规则的执行属性
last : 相当于 Apache 里的(L)标记,表示完成 rewrite 匹配;
break: 本条规则匹配完成后,终止匹配,不再匹配后面的规则。
redirect: 返回 302 临时重定向,浏览器地址会显示跳转后的 URL 地址。
permanent: 返回 301 永久重定向,浏览器地址栏会显示跳转后的 URL 地址。
其中 last 和 break 用来实现 URL 重写时,浏览器地址栏 URL 地址不变。
(2)Nginx Rewrite 规则常用表达式,主要用于匹配参数、字符串及过滤设置。
. 匹配任何单字符;
[word] 匹配字符串:word;
[^word] 不匹配字符串:word;
jfedu|jfteach 可选择的字符串:jfedu|jfteach;
? 匹配 0 到 1 个字符;
* 匹配 0 到多个字符;
+ 匹配 1 到多个字符;
^ 字符串开始标志;
$ 字符串结束标志;
\n 转义符标志。
(3)Nginx Rewrite 变量,常用于匹配 HTTP 请求头信息、浏览器主机名、URL 等。
HTTP_USER_AGENT 用户使用的代理,例如浏览器;
HTTP_REFERER 告知服务器,从哪个页面来访问的;
HTTP_COOKIE 客户端缓存,主要用于存储用户名和密码等信息;
HTTP_HOST 匹配服务器 ServerName 域名;
HTTP_ACCEPT 客户端的浏览器支持的 MIME 类型;
REMOTE_ADDR 客户端的 IP 地址
QUERY_STRING URL 中访问的字符串;
DOCUMENT_ROOT 服务器发布目录;
SERVER_PORT 服务器端口;
SERVER_PROTOCOL 服务器端协议;
TIME_YEAR 年;
TIME_MON 月;
TIME_DAY 日;
(4) 示例配置
将 testa.net 跳转至 www.testb.net。
if ($host = 'testa.net' ) {
rewrite ^/(.*)$ http://www.testb.net/$1 permanent;
}
访问/test/test01/跳转至/newindex.html,浏览器地址不变。
rewrite ^/jfedu/test01/$ /newindex.html last;
4. $1,$2 的意义
表示路径中正则表达式匹配的第一个参数
nginx 负载均衡 proxy_pass 与 upstream 及 rewrite ,expires 的配置总结的更多相关文章
- [转载]nginx负载均衡+keepalived三主(多主)配置
nginx负载均衡+keepalived三主(多主)配置 1.实验环境,实现目标三台主机分别配置nginx负载均衡对后端多台主机做转发,同时配置keepalived实现HA,保证任意主机出现故障时其他 ...
- Nginx 负载均衡演示之 upstream 参数 & location 参数
upstream 参数nginx关于upstream参数官方文档:http://nginx.org/en/docs/http/ngx_http_upstream_module.html upstrea ...
- Nginx负载均衡配置与负载策略
原理 负载均衡的目的是为了解决单个节点压力过大,造成Web服务响应过慢,严重的情况下导致服务瘫痪,无法正常提供服务. 应用场景 春节期间在12306网站上买过火车票的朋友应该深有体会,有时查询一张火车 ...
- Nginx系列篇二:linux搭建Nginx负载均衡
建议先搭建好Nginx环境 可阅读--->Linux中搭建Nginx 1.准备好三台服务器[标配] 一.nginx负载均衡服务器:192.168.102.110,配置好Nginx 二.tomca ...
- Nginx负载均衡的max_fails和fail_timeout的默认配置问题
今天发现一个奇怪的现象,前端请求后端服务多次后会超时一次,经过多次验证确定是大概10s左右就会超时一次,检查后端服务,发现其中一个节点已经夯死. 但是我们的nginx负载均衡策略是轮询机制,按照配置来 ...
- nginx负载均衡(5种方式)、rewrite重写规则及多server反代配置梳理
Nginx除了可以用作web服务器外,他还可以用来做高性能的反向代理服务器,它能提供稳定高效的负载均衡解决方案.nginx可以用轮询.IP哈希.URL哈希等方式调度后端服务器,同时也能提供健康检查功能 ...
- (转)nginx负载均衡(5种方式)、rewrite重写规则及多server反代配置梳理
Nginx除了可以用作web服务器外,他还可以用来做高性能的反向代理服务器,它能提供稳定高效的负载均衡解决方案.nginx可以用轮询.IP哈希.URL哈希等方式调度后端服务器,同时也能提供健康检查功能 ...
- nginx反向代理,负载均衡,动静分离,rewrite地址重写介绍
一.rewrite地址重写 地址转发后客户端浏览器地址栏中的地址显示是不变的,而地址重写后地址栏中的地址会变成正确的地址. 在一次地址转发过程中只会产生一次网络请求,而一次地址重写产生两次请求. 地址 ...
- Nginx系列一:正向代理和反向代理、Nginx工作原理、Nginx常用命令和升级、搭建Nginx负载均衡
转自https://www.cnblogs.com/leeSmall/p/9351343.html 仅供个人学习 一.什么是正向代理.什么是反向代理 1. 正向代理,意思是一个位于客户端和原始服务器( ...
- [转]Nginx负载均衡原理初解
什么是负载均衡 我们知道单台服务器的性能是有上限的,当流量很大时,就需要使用多台服务器来共同提供服务,这就是所谓的集群. 负载均衡服务器,就是用来把经过它的流量,按照某种方法,分配到集群中的各台服务器 ...
随机推荐
- 反向 Debug 了解一下?揭秘 Java DEBUG 的基本原理
Debug 的时候,都遇到过手速太快,直接跳过了自己想调试的方法.代码的时候吧-- 一旦跳过,可能就得重新执行一遍,准备数据.重新启动可能几分钟就过去了. 好在IDE 们都很强大,还给你后悔的机会,可 ...
- .NET开源免费功能最全的商城项目
前言 今天给大家推荐一个功能丰富.免费.灵活且可定制的开源电子商务解决方案:nopCommerce.大家假如有商城需求可以直接使用该项目进行二次开发,省时省力. 项目介绍 nopCommerce在.N ...
- 普通用户登录切换到root用户
使用su命令: 在终端中输入以下命令并按Enter键: su - 输入root用户的密码,然后按Enter键. 如果密码正确,你将会切换为root用户,并且可以执行root用户的操作. 使用sudo命 ...
- spring-mvc 系列:获取请求参数(ServletAPI、形参、RequestParam、RequestHeader、CookieValue、POJO等方式)
目录 一.通过 ServletAPI 获取 二.通过控制器方法的形参获取请求参数 三.@RequestParam 四.@RequestHeader 五.@CookieValue 六.通过 POJO 获 ...
- 优化了MYSQL大量写入问题,老板奖励了1000块给我
摘要:大家提到Mysql的性能优化都是注重于优化sql以及索引来提升查询性能,大多数产品或者网站面临的更多的高并发数据读取问题.然而在大量写入数据场景该如何优化呢? 今天这里主要给大家介绍,在有大量写 ...
- 可以一学的代码优化小技巧:减少if-else冗余
摘要:if-else 语句对于程序员来说,是非常非常熟悉的一个判断语句,我们在日常开发和学习中都经常看见它. 本文分享自华为云社区<JavaScript代码之美-代码优化,减少if-else冗余 ...
- GaussDB拿下的安全认证CC EAL4+究竟有多难?
摘要:近日,经过全球知名独立认证机构SGS Brightsight实验室的安全评估,华为云GaussDB企业级分布式数据库内核获得全球权威信息技术安全性评估标准CC EAL4+级别认证 本文分享自华为 ...
- 云小课 | 一个三分钟快速定制OCR应用的神器,要不?
摘要:ModelArts Pro提供了文字识别套件,基于丰富的文字识别算法和行业知识积累,帮助客户快速构建满足不同业务场景需求的文字识别服务.三分钟即可快速定制OCR服务,实现多种版式图像的文字信息结 ...
- 常遇到读多写少,教你用ReadWriteLock实现一个通用的缓存中心
摘要:本文我们就来说说使用ReadWriteLock如何实现一个通用的缓存中心. 本文分享自华为云社区<[高并发]原来ReadWriteLock也能开发高性能缓存,看完我也能和面试官好好聊聊了! ...
- 云图说|初识云数据库GaussDB(for Redis)
阅识风云是华为云信息大咖,擅长将复杂信息多元化呈现,其出品的一张图(云图说).深入浅出的博文(云小课)或短视频(云视厅)总有一款能让您快速上手华为云.更多精彩内容请单击此处. 摘要:云数据库Gauss ...