正文:
视频播放协议请求应用于多个业务产品,为了提供一个稳定的解析服务,当CMS、媒资、聚合平台等产品对视频信息发生的增、删、改操作时,通过监控DB服务将变化实时写入高性能简单消息队列服务,及时更新多个对外视频服务产品的视频信息更新.
1.Nginx服务通过内嵌的perl脚本动态解析URL参数.提取key信息.
perl_set $storm_key_new '
use MIME::Base64::Perl;
use URI::Escape;
sub{
my $r = shift;//request请求对象
my $request_uri = $r->variable("request_uri");//提取uri
my $query_uri = $r->unescape($request_uri);
my $buffer = $query_uri;
if($buffer =~/&/){//判定uri中是否包含&符号
my @pairs = split(/&/, $buffer);//根据&符号分割数组
foreach $pair (@pairs)
{
if($pair =~ /c=storm/i){//提取"c=storm"的字符串
$pair =~ s/c=//g;//将"c="剔除
return $pair;
}
}
}
}
';
2.设置storm_perl的负载均衡服务
upstream storm_perl {
server 192.168.1.87:8000 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.1.110:8000 weight=1 max_fails=2 fail_timeout=30s;
}
3.Nginx服务通过key信息查找本地是否存在对应的缓存数据,如果存在直接返回给客户端.
设置nginx开启本地缓存,并指定缓存存放位置及相关信息.
#注:proxy_temp_path和proxy_cache_path指定的路径必须在同一分区
proxy_temp_path /opt/data/proxy_temp_dir;
#设置Web缓存区名称为cache_one,内存缓存空间大小为200MB,1天没有被访问的内容自动清除,硬盘缓存空间大小为30GB。
proxy_cache_path /opt/data/proxy_cache_dir levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;
设置后端请求的header信息,缓存时间,
location / {
#定义客户端缓存一小时
expires 1h;
#后端服务请求返回的状态码为502,504,error,超时等,自动转入下个后端服务器
proxy_next_upstream http_502 http_504 error timeout invalid_header;
#进行缓存,使用Web缓存区cache_one
proxy_cache cache_one;
#对不同的HTTP状态码设置不同的缓存时间
proxy_cache_valid 200 304 30d;
proxy_cache_valid 404 1m;
#以域名、URI、参数组合成Web缓存的Key值,Nginx根据Key值哈希,存储缓存内容到二级缓存目录内
proxy_cache_key $storm_key_new;
#设置后端服务请求的host信息
proxy_set_header Host $host;
#设置客户端的真实IP地址
proxy_set_header X-Forwarded-For $remote_addr;
#将请求转向upstream
proxy_pass http://storm_perl;
error_log /opt/modules/nginx/logs/error.log crit;
access_log /opt/modules/nginx/logs/access.log main;
}
4..Nginx服务通过内嵌的perl脚本动态读取memcache服务的数据,读取失败后,直接将请求转向后端的apache服务器
#设置memcache服务的IP和端口
set $memd 0;
set $memcached_server "127.0.0.1:11211";
location ~ .*\.(php|jsp|cgi)?
{
perl 'sub {
use Cache::Memcached;
my $r = shift;
if($r->variable("memd")){
my $memd = $r->variable("memd");
}
if(!$memd){
$memd = new Cache::Memcached {"servers" => [$r->variable("memcached_server")],"debug" => 0,"compress_threshold" => 10_000};
$r->variable("memd",$memd);
}
my $realkey = 0;
$realkey = $r->variable("storm_key_new");
my $stormbox = $memd->get($realkey);
if($stormbox){
$r->send_http_header;
$r->print($stormbox);
return 200;
}else{
return 404;
}
}';
error_page 404 500 502 503 504 =[color=red] @get_storm;[/color]
access_log /opt/modules/nginx/logs/log_mm.log count;
}
当读取memcache的请求返回404时,直接转向另外一个location
location @get_storm {
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://backend_server;
access_log /opt/modules/nginx/logs/log_db.log count;
}
- 大小: 282.1 KB
分享到:
相关推荐
### 架构师实战Nginx构建高性能WEB服务器 #### 1. Nginx入门简介 Nginx是一款高效、稳定、功能丰富的Web服务器软件,同时也是一款优秀的反向代理服务器和邮件代理服务器。Nginx最初由Igor Sysoev为解决当时Web...
这本书旨在帮助读者全面掌握Nginx的核心原理、模块开发及系统架构,从而更好地利用Nginx进行高性能的Web服务构建。 Nginx是一款开源的高性能HTTP服务器和反向代理服务器,以其高效的并发处理能力、轻量级的内存占用...
《Nginx深入理解Nginx模块开发与架构解析(第2版)》...无论你是Nginx的初学者还是经验丰富的开发者,都能从《Nginx深入理解Nginx模块开发与架构解析(第2版)》中受益匪浅,提升自己在构建高性能Web服务器领域的专业能力。
《Nginx高性能Web服务器实战教程》是一本深入讲解如何利用Nginx构建高效稳定Web服务的书籍。Nginx以其高性能、轻量级、反向代理和负载均衡等特性,已经成为许多企业和开发者首选的Web服务器。这本书涵盖了从基础配置...
《深入理解Nginx模块开发与架构解析(第2版)》是一本专注于Nginx技术的专业书籍,针对Nginx的内部工作机制和模块开发进行了深入的探讨...通过阅读此书,你将能够更有效地驾驭Nginx,构建高性能、高可用的网络服务环境。
本书旨在帮助读者掌握Nginx的核心概念、工作原理以及模块开发技能,从而在实际工作中更好地利用Nginx处理高并发、高性能的Web服务需求。 Nginx是一款开源的Web服务器,因其高效的性能和强大的反向代理、负载均衡...
1. **Nginx基础架构**:Nginx采用事件驱动的异步非阻塞模型,这使得它在处理高并发请求时表现出色。书中会详细介绍Nginx的多进程模型、工作进程的工作方式以及事件处理机制。 2. **配置文件解析**:Nginx的配置文件...
Nginx是一款广泛应用的开源Web服务器,以其高性能、高并发处理能力以及轻量级的特性著称。本书旨在帮助读者全面理解Nginx的工作原理和配置技巧,提升网站服务的稳定性和效率。 Nginx的核心特点在于其反向代理、负载...
本章将深入探讨Nginx的架构原理、配置、功能以及如何利用它来构建高性能的Web服务。 一、Nginx的特性与优势 1. 非阻塞I/O模型:Nginx采用事件驱动的异步非阻塞I/O模型,能够高效地处理大量并发连接,降低了CPU和...
Nginx的核心特性包括其事件驱动的异步非阻塞模型,这种模型使得Nginx在处理高并发请求时表现出色。Nginx采用多进程结构,主进程负责管理工作进程,工作进程则处理实际的网络IO操作。这种架构设计保证了系统的稳定性...
《深入理解Nginx模块开发与架构解析》是一本针对Nginx技术的深度解析书籍,专注于探讨Nginx的内部机制、模块开发以及整体架构。Nginx是一款高性能的Web服务器,因其反向代理、负载均衡和静态文件处理能力而广受欢迎...
这将帮助你了解Nginx如何实现高并发和低延迟,以及如何优化性能。此外,Nginx的配置文件解析、模块间的交互、以及配置指令的生命周期也是重要的学习内容。 Nginx的反向代理功能使得它能有效地分发流量,实现负载...
Nginx由俄罗斯开发者Igor Sysoev于2002年开发,其设计目标是解决高并发问题,提供低延迟和高吞吐量的服务。Nginx采用事件驱动的异步非阻塞模型,使得它在处理大量并发连接时表现出色。此外,Nginx不仅支持HTTP和...
Nginx是一款高性能的HTTP和反向代理服务器,因其轻量级的事件驱动模型和非阻塞I/O处理方式,在高并发场景下表现出色。本书首先会介绍Nginx的基础概念和配置,包括其基本命令行参数、配置文件结构以及主要功能模块的...
《Nginx高性能Web服务器实战教程》是一本深入解析Nginx服务器的实用指南,旨在帮助读者掌握如何利用Nginx构建高效、稳定的Web服务环境。Nginx以其反向代理、负载均衡、静态文件处理等功能,以及轻量级、高性能的特性...
Nginx作为一款高性能、轻量级的Web服务器和反向代理服务器,在大数据处理、高并发场景下表现出色,因此在互联网行业中广泛应用。本书旨在帮助读者深入掌握Nginx的工作原理,从而能够进行高效的定制化开发。 首先,...
通过深入理解Nginx与Lua的结合,开发者可以构建出更加灵活、高效的Web服务,满足复杂业务需求,同时充分利用Nginx的高性能特性。在实际工作中,结合"NGINX实战 基于LUA语言的配置、开发与架构详解@java1234.com.pdf"...
通过《实战Nginx:取代Apache的高性能Web服务器》这本书,读者不仅可以掌握Nginx的基本操作,还能学习到如何利用Nginx构建高效、稳定、安全的Web服务环境,对于从事Web开发和运维的人员来说,是一份宝贵的参考资料。
通过本文的介绍,我们不仅深入了解了Nginx与Keepalived的核心概念及其在高并发场景下的应用,还具体学习了如何通过这些工具构建一套完整的高可用、高并发网站部署方案。通过合理规划和细致操作,能够显著提升网站的...
它的设计目标是高并发、低内存占用以及稳定的服务性能,这使得Nginx在处理大量并发连接时表现卓越,尤其适合于大型网站和高流量的应用场景。 ### 1. 高并发能力 Nginx采用事件驱动、异步非阻塞的架构,能够高效地...