- 浏览: 449197 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (267)
- java (8)
- 求职&面试 (1)
- linux (33)
- windows (1)
- C++ (5)
- android (12)
- QT (1)
- 经验 (1)
- memory-leaks (1)
- Streaming&V/A (1)
- network&security (5)
- SCM (13)
- mysql (10)
- browsers (4)
- Windows APIs (2)
- opensource (1)
- pm (1)
- GDI (1)
- database (14)
- MFC (1)
- web&fronts (17)
- Tomcat (4)
- OLE (1)
- 观后感 (1)
- Production (2)
- UML (3)
- Javascript (7)
- Cloud Computing&SAAS (5)
- SoftwareEngineering (1)
- Computer&Maintenance (1)
- Web (8)
- Desgin (1)
- J2ee (10)
- mysql cluster (0)
- LB&HA (2)
- webserver (11)
- php (5)
- cas&authtication (0)
- Languages (1)
- IDEs (3)
- architecture (2)
- iOS (8)
- spring (3)
- webservices (1)
- security (1)
- MVCFrameworks (2)
- bservices (0)
- build-tools (2)
- unittest (1)
- spring-security (0)
- sphinx (2)
- hibernate (1)
- mybatis (2)
- search (0)
- nginx (2)
- design&production (2)
- DFS (0)
- algorithm (0)
- distributed&network (0)
- blogs (0)
- os&admin (0)
- fastcgi (0)
- kv-db (0)
- operation&maintenance (1)
- productions (9)
- 养生 (1)
- appserver (1)
- HTTP (2)
- test (1)
- erlang (2)
- browser (0)
- 非技术 (2)
- mobiles (2)
- cloud computing (2)
- Business (2)
- maven (1)
- python (5)
- 人生 (0)
- Cryptography (3)
- CV (0)
- cms (2)
- jqm (2)
- html (2)
- flex (1)
- redmine (1)
- iptables (1)
- groovy (1)
- scala (1)
- grails (1)
- ftp (3)
- vsftpd (2)
- lua (0)
- chroot (3)
- jailkit (3)
- UED (0)
- myeclipse (2)
- ide (2)
- eclipse (2)
最新评论
-
Nick712:
http://blog.csdn.net/victory08/ ...
处理SVN出现:Cleanup failed to process the following paths: xxx -
xs6262460:
Spring AOP根据JdbcTemplate方法名动态设置数据源 -
xhpscdx:
我的解决办法是把D:\ACRS\Projects\TAIS 下 ...
处理SVN出现:Cleanup failed to process the following paths: xxx -
hnraysir:
总结得相当不错,支持下。
使用CodeIgniter 创建 RESTful 服务 REST API【原创译文】 -
云上太阳:
这个必须评论下,间接的救过俺的命啊
解决tomcat启动报错,加强错误日志的显示:
ngin只有硬盘级别cache,没有内置内存级别的cache,如果想利用内存加速,只能将/dev/shm挂载到文件系统,再将这个目录作为cache的目录。
nginx一般做cache有以下5种办法:
1:这个办法是把nginx的404错误定向到后端,然后用proxy_store把后端返回的页面保存。
2:也是利用proxy_store,这里利用if判断cache目录是否有文件,没有的话从后端取,取回来后发送给用户并且自身用proxy_store保存起来 #这2种办法其实原理都差不多,只是方法不同,都是使用proxy_sore把数据保存起来,这种办法在准确定义上不能算是cache,只能算是镜像-mirror功能,因为其没有内建机制定时删除cache,等于是永远的静态保存,所以这方案适合基本不会变化的数据,更详细的说明请看下面详细介绍这2种cache的做法和介绍
3:基于memcached的缓存
4:新版本nginx支持真正的proxy_cache模块。 #proxy_cache从nginx-0.7.44版开始,nginx支持了类似squid较为正规的cache功能,这个缓存是把链接用md5编码hash后保存。
5:第三方插件。 #新浪兄弟开发的一个插件,支持nginx cache,但功能还有很多地方有待完善
几种不同cache的做法
传统缓存之一(404)
这个办法是把nginx的404错误定向到后端,然后用proxy_store把后端返回的页面保存。
配置:
location / {
root /home/html/;#主目录
expires 1d;#网页的过期时间
error_page 404 =200 /fetch$request_uri;#404定向到/fetch目录下
}
location /fetch/ {#404定向到这里
internal;#指明这个目录不能在外部直接访问到
expires 1d;#网页的过期时间
alias /home/html/;#虚拟目录文件系统地址要和locaion /一致,proxy_store会将文件保存到这目录下
proxy_pass http://www.sudone.com/;#后端upstream地址,/fetch同时是一个代理
proxy_set_header Accept-Encoding ”;#让后端不要返回压缩(gzip或deflate)的内容,保存压缩后的内容会引发乱子。
proxy_store on;#指定nginx将代理返回的文件保存
proxy_temp_path /home/tmp;#临时目录,这个目录要和/home/html在同一个硬盘分区内
}
使用的时候还有要注意是nginx要有权限往/home/tmp和/home/html下有写入文件的权限,在linux下nginx一般会配置成nobody用户运行,这样这两个目录就要chown nobody,设成nobody用户专用,当然也可以chmod 777,不过所有有经验的系统管理员都会建议不要随便使用777。
2、传统缓存之二(!-e)
原理和404跳转基本一致,但更简洁一些:
location / {
root /home/html/;
proxy_store on;
proxy_set_header Accept-Encoding ”;
proxy_temp_path /home/tmp;
if ( !-f $request_filename )
{
proxy_pass http://www.sudone.com/;
}
}
可以看到这个配置比404节约了不少代码,它是用!-f来判断请求的文件在文件系统上存不存在,不存在就proxy_pass到后端,返回同样是用proxy_store保存。
两种传统缓存都有着基本一样的优点和缺点:
缺点1:不支持带参数的动态链接,比如read.php?id=1,因为nginx只保存文件 名,所以这个链接只在文件系统下保存为read.php,这样用户访问read.php?id=2时会返回不正确的结果。同时不支持 http://www.marry5.com/这种形式的首页和二级目录http://www.marry5.com/download/,因为 nginx非常老实,会将这样的请求照链接写入文件系统,而这个链接显然是一个目录,所以保存失败。这些情况都需要写rewrite才能正确保存。
缺点2:nginx内部没有缓存过期和清理的任何机制,这些缓存的文件会永久性地保存在机器上,如果要缓存的东西非常多,那就会撑暴整个硬盘空间。为此可以使用一个shell脚本定期清理,同时可以撰写php等动态程序来做实时更新。
缺点3:只能缓存200状态码,因此后端返回301/302/404等状态码都不会缓存,假如恰好有一个访问量很大的伪静态链接被删除,那就会不停穿透导致后端承载不小压力。
缺点4:nginx不会自动选择内存或硬盘作为存储介质,一切由配置决定,当然在当前的操作系统里都会有操作系统级的文件缓存机制,所以存在硬盘上也不需要过分担心大并发读取造成的io性能问题。
nginx传统缓存的缺点也是它和squid等缓存软件的不同之特色,所以也可看作其优点。在生产应用中它常常用作和squid的搭档,squid 对于带?的链接往往无法阻挡,而nginx能将其访问拦住,例如:http://marry5.com/?和http://marry5.com/在 squid上会被当做两个链接,所以会造成两次穿透;而nginx只会保存一次,无论链接变成http://marry5.com/?1还是http: //marry5.com/?123,均不能透过nginx缓存,从而有效地保护了后端主机。
nginx会非常老实地将链接形式保存到文件系统中,这样对于一个链接,可以很方便地查阅它在缓存机器上的缓存状态和内容,也可以很方便地和别的文件管理器如rsync等配合使用,它完完全全就是一个文件系统结构。
这两种传统缓存都可以在linux下将文件保存到/dev/shm里,一般我也是这么做的,这样可以利用系统内存来做缓存,利用内存的话,清理过期 内容速度就会快得多。使用/dev/shm/时除了要把tmp目录也指向到/dev/shm这个分区外,如果有大量小文件和目录,还要修改一下这个内存分 区的inode数量和最大容量:
mount -o size=2500M -o nr_inodes=480000 -o noatime,nodiratime -o remount /dev/shm
上面的命令在一台有3G内存的机器上使用,因为/dev/shm默认最大内存是系统内存的一半就是1500M,这条命令将其调大成2500M,同时 shm系统inode数量默认情况下可能是不够用的,但有趣的是它可以随意调节,这里调节为480000保守了点,但也基本够用了。但是这种方式的cache,当网站结构很复杂时,生成N多的cache小文件,if的判断是否会造成比较大的资源损耗和效率较低?这个问题值得思考,但没做过测试不能有实际数据去说明,只是从理论上来说,if必然会导致磁盘的io搜索,会有性能损耗和时间损耗。
3、基于memcached的缓存
nginx对memcached有所支持,但是功能并不是特别之强,性能上还是非常之优秀。
location /mem/ {
if ( $uri ~ “^/mem/([0-9A-Za-z_]*)$” )
{
set $memcached_key “$1″;
memcached_pass 192.168.1.2:11211;
}
expires 70;
}
这个配置会将http://marry5.com/mem/abc指明到memcached的abc这个key去取数据。
nginx目前没有写入memcached的任何机制,所以要往memcached里写入数据得用后台的动态语言完成,可以利用404定向到后端去写入数据。
4、基于第三方插件ncache
ncache是新浪兄弟开发的一个不错的项目,它利用nginx和memcached实现了一部分类似squid缓存的功能,我并没有使用这个插件的经验,可以参考:
http://code.google.com/p/ncache/
5、nginx新开发的proxy_cache功能
从nginx-0.7.44版开始,nginx支持了类似squid较为正规的cache功能,目前还处于开发阶段,支持相当有限,这个缓存是把链接用md5编码hash后保存,所以它可以支持任意链接,同时也支持404/301/302这样的非200状态。
配置:
首先配置一个cache空间:
proxy_cache_path /pathforcache levels=1:2 keys_zone=NAME:10m inactive=5m max_size=2m clean_time=1m; #定义cache目录,这一句话务必记得,放在http{}中而不是放到server{}里面
接着再配置一个proxy缓存目录
proxy_temp_path /pathfortmp;
注意这个配置是在server标签外,levels指定该缓存空间有两层hash目录,第一层目录是1个字母,第二层为2个字母,保存的文件名就会 类似/path/to/cache/c/29/b7f54b2df7773722d382f4809d65029c;keys_zone为这个空间起个名 字,10m指空间大小为10MB;inactive的5m指缓存默认时长5分钟;max_size的2m是指单个文件超过2m的就不缓 存;clean_time指定一分钟清理一次缓存。
location / {
proxy_pass http://www.marry5.com/;
proxy_cache NAME;#使用NAME这个keys_zone
proxy_cache_valid 200 302 1h;#200和302状态码保存1小时
proxy_cache_valid 301 1d;#301状态码保存一天
proxy_cache_valid any 1m;#其它的保存一分钟
}
ps:支持cache的0.7.44到0.7.51这几个版本的稳定性均有问题,访问有些链接会出现错误,所以这几个版本最好不要在生产环境中使 用。nginx-0.7下目前所知较为稳定的版本是0.7.39。稳定版0.6.36版也是近期更新,如果在配置里没有使用到0.7的一些新标签新功能, 也可以使用0.6.36版。这个cache模块还在开发阶段,在功能上还有许多等待改进的地方,例如针对不同文件类型设置不同的过期时间等.
发表评论
-
软件介绍(apache lighttpd nginx)
2013-02-01 23:06 0一.软件介绍(apache lighttpd nginx ... -
如何设置nginx反向代理实现服务器瞬间故障转移
2013-01-30 13:39 0如何设置nginx反向代理实现服务器瞬间故障转移 ... -
Nginx下配置Http Basic Auth保护目录
2013-01-26 02:06 1141Nginx下配置Http Basic Auth保护目录 & ... -
Nginx 修改配置文件根据url来分发后端服务器(转)
2012-12-12 23:06 0Nginx 修改配置文件根据url来分发后端服务器( ... -
nginx 处理header 全攻略
2012-12-07 17:22 0nginx 处理header 全攻略 ... -
nginx配置
2012-12-04 23:18 0nginx配置 nginx配置 ... -
Nginx+tomcat配置集群
2012-12-04 22:43 0Nginx+tomcat配置集群 ... -
nginx:413 Request Entity Too Large
2012-11-23 14:44 0nginx:413 Request Entity T ... -
nginx+fastcgi+c/c++搭建高性能Web框架
2012-11-17 22:18 0nginx+fastcgi+c/c++搭建高性能 ... -
Nginx负载均衡重定向问题
2012-11-09 18:01 0用nginx实现负载均衡,当负载端口不是80时, ... -
CentOS安装Nginx 报错“configure: error: the HTTP rewrite module requires the PCRE lib
2012-10-31 14:10 5279CentOS安装Nginx 报错“configu ... -
Linux系统优化(1)---给nginx反向代理做优化
2012-10-20 14:54 0Linux系统优化(1)---给ng ... -
杂谈Nginx与HTTP协议
2012-10-20 14:49 1401杂谈Nginx与HTTP协议 在项目中遇到一个问题,需 ... -
Avoid nginx 411 Content-Length required errors
2012-10-20 14:11 1769Avoid nginx 411 Content-Le ... -
Nginx+Tomcat实现https安全链接
2012-09-07 14:38 0Nginx+Tomcat实现https安全链接 ... -
Nginx配置文件详细说明
2012-09-07 12:48 8913Nginx配置文件详细说明 ... -
nginx配置文件详解
2012-09-07 12:46 1568nginx配置文件详解 列出了ng ... -
Nginx+Keepalived+Tomcat之动静分离的web集群
2012-08-29 00:38 10141Nginx+Keepalived+Tomcat之 ... -
关于nginx upstream的几种配置方式
2012-08-21 11:58 0Posted on 2011 年 06 月 16 ... -
nginx参考
2012-08-21 11:53 0nginx参考 http://whxhz.iteye.com ...
相关推荐
共30页第2.5篇-Nginx部分-虚拟主机配置 共12页第2.6篇-Nginx部分-反向代理和负载均衡-反向代理配置 共13页第2.6篇-Nginx部分-反向代理和负载均衡-负载均衡配置 共9页第2.7篇-Nginx部分-Rewrite功能 共29页第2.8篇-...
nginx-0.8.51下载 tomcat-6.0.20下载 pcre-8.12下载 2 环境描述 window7下运行的centos5.4的Vmware7虚拟机 nginx-0.8.51 tomcat-6.0.20 pcre-8.12 jdk-6u7-linux-i586 3 安装步骤 3.1 安装nginx所需的pcre ...
在Win7 64位系统上安装Nginx,可以利用其强大的负载均衡和反向代理功能,优化网站性能并提升可用性。** ### 一、Nginx的安装 1. **下载Nginx安装包**:首先,你需要从Nginx官方网站获取适用于Windows 64位系统的...
nginx 负载均衡 反向代理 nginx 负载均衡 反向代理 nginx 负载均衡 反向代理
Nginx以其高效的并发处理能力和低内存占用而闻名,常作为反向代理和负载均衡器。配置Nginx时,你需要在`nginx.conf`文件中定义一个或多个upstream块,列出后端服务器(即Tomcat实例),并指定负载均衡策略。例如,你...
它不仅可以用作静态内容的 Web 服务器,还可以作为反向代理、负载均衡器和邮件代理服务器。 2. **HTTP FLV 模块** nginx-http-flv-module 是由 nginx 开发社区创建的一个第三方模块,用于在 Nginx 上实现 HTTP ...
4. **内容分发**:Nginx的反向代理功能可以用于负载均衡和内容分发,提高视频服务的可扩展性和可用性。 总结,这个压缩包中的"nginx-with-http-flv-moudle"是一个包含Nginx、Nginx-RTMP和Nginx-HTTP-FLV模块的预...
在构建高性能、高可用性的Web应用系统时,"nginx+tomcat7负载均衡+redis缓存session"是一种常见的架构模式。这种模式结合了Nginx的反向代理和负载均衡能力,Tomcat作为Java应用服务器处理业务逻辑,而Redis则用于...
Nginx是一个高性能的HTTP和反向代理服务器,广泛用于Web服务器领域,尤其在处理静态内容和高并发场景下表现出色。Nginx-http-flv-module是针对Nginx的一个扩展模块,它允许Nginx支持HTTP实时流传输协议...
Nginx 负载均衡和反向代理配置和优化 DNS 轮询方式: 介绍: DNS 轮询是指一个域名可以绑定到多个的 ip 服务器上, 用户在访问的时候 dns轮询访问这几个 ip 的服务器, 达到负载均衡的目的. 可以使用 linux 命令 dig ...
**Nginx负载均衡** ...总的来说,Nginx的负载均衡和反向代理功能为Web服务提供了强大的可扩展性和高可用性,是现代Web架构中的关键组件。正确配置和利用这些特性,能够显著提升网站的性能和稳定性。
Nginx的负载均衡和反向代理Nginx的负载均衡和反向代理Nginx的负载均衡和反向代理Nginx的负载均衡和反向代理Nginx的负载均衡和反向代理
在本文中,我们将深入探讨Nginx的负载均衡和反向代理功能。 1. **Nginx反向代理** 反向代理是指Nginx作为前端服务器,接收来自客户端的HTTP请求,然后将这些请求转发给后端的Web服务器处理。反向代理的主要作用是...
Nginx相较于 Apache、lighttpd 具有占有内存少,稳定性高等优势,并且Nginx有反向代理、负载均衡和缓存数据的功能。 反向代理:其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求...
15-反向代理实现nginx+apache动静分离.wmv 111.9MB 14-expires缓存提升网站负载.wmv 55.4MB 13-nginx gzip压缩提升网站速度.wmv 79.2MB 12-商城url重写实战.wmv 155.5MB 11-安装ecshop.wmv 53.0MB
在本教程中,我们将探讨如何在Windows环境下配置Nginx进行反向代理和负载均衡,以及Nginx的基本操作。** ### 一、安装Nginx 1. 解压"nginx-1.19.0"压缩包到您希望的安装目录。 2. 进入"conf"目录,编辑`nginx.conf`...
nginx sticky是nginx的module,可以实现基于cookie的负载均衡。 下载后,在编译安装nginx时,用--add-module选项,指到sticky所在目录。类似命令如下: ./configure --prefix=/usr/local/nginx-1.6.0 --add-module=...
在构建高性能、高可用性的Web服务环境中,"负载均衡nginx+tomcat+terracotta+nfs+mysql"是一个常见的架构组合。这个组合充分利用了各组件的优势,以实现数据的高效处理、分布式存储以及会话共享,确保系统的稳定性和...
Nginx作为一款高性能的HTTP和反向代理服务器,具备强大的负载均衡能力。本部分将详细讲解Nginx中的负载均衡配置方法。 1. **什么是负载均衡** 负载均衡是通过特定算法将网络流量分布到多个服务器节点,以降低单个...