Chinaunix

标题: 案例讨论——Nginx在工作中的应用讨论(获奖名单已公布-2012-8-23) [打印本页]

作者: 无风之谷    时间: 2012-06-21 10:06
标题: 案例讨论——Nginx在工作中的应用讨论(获奖名单已公布-2012-8-23)

获奖名单已公布,详情请看:http://bbs.chinaunix.net/thread-3767018-1-1.html

Nginx作为大家非常熟悉的Web/负载均衡软件,相信大家在生产环境已经用得比较熟练了,Nginx+FastCGI| Nginx+Keepalived这些软件的配合相信大家在自己的网站上都尝试过,这里我们就一些在工作中Nginx经常遇到的问题,以及它与别的开源软件作一些对比和讨论,让大家更为了解这款强大的开源软件。

讨论话题:
一、Nginx作为轻量级的负载均衡器,它较适用于哪种场景中,它与之LVS/HAProxy的对比,其优势在哪里?

二、Nginx作为高抗并发的Web软件,与传统的Apache相比较为有优势,大家一般会将其哪种场景中,它与Apache相对,其优势在哪里?

三、Nginx作为Cache也越来越成熟了,与专业级的Squid/Varnish相比,大家更倾向于将其应用于哪种场景中,它与Squid/Varnish相比,优势又如何呢?

邀请嘉宾:

刘天斯(phpcool) 腾讯系统架构师
余洪春(yuhongchun)系统架构师
崔晓辉( coralzd ) 大众网高级系统管理员
刘晗昭(wenzizone) 昆仑万维高级架构师
胡安伟(king_819) 金游数据运维主管
刘鑫 (Gray1982)  小米手机 高级系统运维工程师

活动有奖:
我们为大家准备《决战Nginx技术卷——高性能Web服务器部署与运维(基于php、Java、ASP.NET等)》和《决战Nginx系统卷——高性能Web服务器详解与运维》两本书共10本,奖励给积极参与回复(有效回复超过3贴)会员。

  

作者: 无风之谷    时间: 2012-06-21 10:30
欢迎大家参与:wink:
作者: chenyx    时间: 2012-06-21 10:33
支持下无风
作者: zxf5420    时间: 2012-06-21 10:40
技术浅淡,顶下这讨论,希望把结果贴出来下。
作者: chenyx    时间: 2012-06-21 10:40
一、Nginx作为轻量级的负载均衡器,它较适用于哪种场景中,它与之LVS/HAProxy的对比,其优势在哪里?
我是将nginx作为反向代理用的.LVS/HA还没有用过,不好比较.
记得nginx作为负载均衡器,后面的Real服务器,只要网络可达就可以,没有LVS的那种限制.
二、Nginx作为高抗并发的Web软件,与传统的Apache相比较为有优势,大家一般会将其哪种场景中,它与Apache相对,其优势在哪里?
看网上的评测,nginx在高并发的情况下,性能确实不俗,我觉得与nginx的小巧有关系,另外,一般我们的web后台会要求用php,nginx一般用哪个的是php-fcgi方式,而apache是module的方式,应该是这个差异造成的.
据说最新的Apache 2.4的版本,性能也很不俗了,与nginx有的一拼,不过目前我还没有测试过.
一般情况下,我使用nginx,会把它放到前端,做负载均衡/cache,后端用apache或者是IIS.
三、Nginx作为Cache也越来越成熟了,与专业级的Squid/Varnish相比,大家更倾向于将其应用于哪种场景中,它与Squid/Varnish相比,优势又如何呢?
我的网络不需要代理,所以目前没研究过Squid/Varnish.
作者: ecjtubaowp    时间: 2012-06-21 10:44
支持一下。
作者: yun_88    时间: 2012-06-21 11:04
支持                     
作者: yahoon    时间: 2012-06-21 11:29
本帖最后由 yahoon 于 2012-06-25 10:45 编辑

一、Nginx作为轻量级的负载均衡器,它较适用于哪种场景中,它与之LVS/HAProxy的对比,其优势在哪里?
nginx是新兴的http server, 体量小却功能强大. 大有后起直追apache之势.
其负载均衡的支持非常强大,对L7的基于URI的转发支持的非常好, 用户可以很容易的编辑配置文件定义转发规则.
这可是LVS这类L4的负载均衡器说做不到的.
且安装容易,配置简单.


二、Nginx作为高抗并发的Web软件,与传统的Apache相比较为有优势,大家一般会将其哪种场景中,它与Apache相对,其优势在哪里?
当然是做web前端和反向代理咯. apache的反向代理能力相当弱.尤其nginx支持基于URI的转发,那样配合后端的php或者java应用简直是天衣无缝.
我觉得相比apache最大的优势当然是抗高并发,支持负载均衡和URL转发.


三、Nginx作为Cache也越来越成熟了,与专业级的Squid/Varnish相比,大家更倾向于将其应用于哪种场景中,它与Squid/Varnish相比,优势又如何呢?
我一般用作本地的存储一些少量的静态文件(如图片之类). 我觉得对于大量静态文体的cache加速还是需要用squid或varnish,如CDN之类.



作者: 南非蚂蚁    时间: 2012-06-21 11:30
1:nginx作为负载均衡优势很明显,首先,他工作在网络的7层之上,正则匹配功能很强大,并且对网络依赖非常小,很适合做负载均衡,并且在高并发的负载均衡上表现性能稳定。
2:一般都是nginx放在最前面通过反向代理功能处理静态资源,而后端让apache处理动态请求。

3:我一直在用nginx的cache功能,在Web缓存加速功能、清除指定URL缓存的功能方面都可以取代squid了,而在性能上,Nginx通过对多核CPU的支持,超过Squid不少,varnish和squid是专业的cache服务,而apache,nginx这些都是第三方模块完成,在内存的利用上,Varnish比Squid具有优势,它避免了Squid频繁在内存、磁盘中交换文件,性能要比Squid高。
作者: shang2010    时间: 2012-06-21 12:26
大家都在说nginx的好,,,

能不能有比较专业的技术文档说明呢?比如,负载均衡这块

  1. 一、Nginx作为轻量级的负载均衡器,它较适用于哪种场景中,它与之LVS/HAProxy的对比,其优势在哪里?
  2. nginx是新兴的http server, 体量小却功能强大. 大有后起直追apache之势.
  3. 其负载均衡的支持非常强大,对L7的基于URI的转发支持的非常好, 用户可以很容易的编辑配置文件定义转发规则.
  4. 这可是LVS这类L4的负载均衡器说做不到的.
  5. 且安装容易,配置简单.
复制代码
ngix是通过什么算法/方案来做到均衡的呢???
作者: yahoon    时间: 2012-06-21 13:37
回复 11# shang2010

据我所知支持轮询, 加权, ip hash.
而且支持 failure detect, 对失败的点自动去除
   
作者: shang2010    时间: 2012-06-21 13:57
本帖最后由 shang2010 于 2012-06-21 14:02 编辑
yahoon 发表于 2012-06-21 13:37
回复 11# shang2010

据我所知支持轮询, 加权, ip hash.

嗯,我google了一下,nigix的负债均衡问题,下面有个简单示例

  1.       upstream  www.s135.com  {
  2.                server   192.168.1.2:80;
  3.                server   192.168.1.3:80;
  4.                server   192.168.1.4:80;
  5.                server   192.168.1.5:80;
  6.        }

  7.        upstream  blog.s135.com  {
  8.                server   192.168.1.7:8080;
  9.                server   192.168.1.7:8081;
  10.                server   192.168.1.7:8082;
  11.        }
复制代码
关于负载均衡,从采用的方案都是以下两种,一个是轮流依次来(list),还有个是hash池的那种,
两者响应速度都会很快
先谢谢了。稍后我会继续关注负载方面的其他技术细节问题
http://blog.s135.com/post/306/

作者: 方兆国    时间: 2012-06-21 13:57
yahoon 发表于 2012-06-21 13:37
回复 11# shang2010

据我所知支持轮询, 加权, ip hash.
  1. upstream tomcat_Server
  2.         {
  3.                 server 127.0.0.1:8080 weight=2;
  4.                 server 127.0.0.1:8081 weight=2;
  5.                 server 127.0.0.1:8082 weight=2;
  6.                 server 127.0.0.1:8083 back;
  7.         }
复制代码
你说的是这个吧
作者: yahoon    时间: 2012-06-21 13:58
回复 14# 方兆国


    是啊 呵呵
作者: renxiao2003    时间: 2012-06-21 13:59
参加。参加。
作者: ltgzs777    时间: 2012-06-21 14:02


一、Nginx作为轻量级的负载均衡器,它较适用于哪种场景中,它与之LVS/HAProxy的对比,其优势在哪里?

  首先来说,Nginx比较有名的功能是反向代理,反向代理和负载均衡不是一回事,Nginx也没打算和LVS有一比。


二、Nginx作为高抗并发的Web软件,与传统的Apache相比较为有优势,大家一般会将其哪种场景中,它与Apache相对,其优势在哪里?

   其次,Nginx开发中解决的另一个重要问题是C10k问题,与Apache相比不能谈优势不优势;


三、Nginx作为Cache也越来越成熟了,与专业级的Squid/Varnish相比,大家更倾向于将其应用于哪种场景中,它与Squid/Varnish相比,优势又如何呢?

    最后,Nginx有自己的缓存机制,既可以是内存缓存也可以是磁盘缓存,而且在这套书中也介绍了Nginx的5大缓存机制:

    第一种、Proxy_cache
        第二种、proxy_store
        第三种、Memcached
        第四种、NCACHE(概念缓存,已经不用)
        第五种、Varnish

    根据应用程序或者系统部署(就是服务器的资源情况)进行选择使用。




作者: 方兆国    时间: 2012-06-21 14:07
回复 13# shang2010


    你的两个例子不都一样么?
作者: 方兆国    时间: 2012-06-21 14:10
ltgzs777 发表于 2012-06-21 14:02
一、Nginx作为轻量级的负载均衡器,它较适用于哪种场景中,它与之LVS/HAProxy的对比,其优势在哪里?
...
第一种、Proxy_cache
第二种、proxy_store


代理我用过,但是没有用过缓存

作者: 方兆国    时间: 2012-06-21 14:12
对了,设置了upstream后,连接的图片什么的都没了,貌似得保存在Nginx下,不能放在Tomcat等真实服务器下
作者: shang2010    时间: 2012-06-21 14:19
本帖最后由 shang2010 于 2012-06-21 14:20 编辑
方兆国 发表于 2012-06-21 14:07
回复 13# shang2010


嗯啊,我不懂,所以看到问题的时候google 了一下


然后把看到的配置代码贴上了,两个人都帖了,纯属巧合
作者: dengbao2001    时间: 2012-06-21 14:22
支持下,等待大家分享!
作者: 方兆国    时间: 2012-06-21 14:24
回复 21# shang2010


    嗯,我想你看到的例子可能是说即能使用Tomcat等JSP的(一般都是8080),又能用其他的(一般都是80)

你给的那个网站我是进不去的(应该是我的网络环境的原因)
作者: 英语盲学linux    时间: 2012-06-21 14:31
                       支持一下
作者: shang2010    时间: 2012-06-21 14:38
方兆国 发表于 2012-06-21 14:24
回复 21# shang2010


我给你贴一下,

  1.   www.s135.com 和 blog.s135.com 域名均指向 Nginx 所在的服务器IP。
  2.   用户访问http://www.s135.com,将其负载均衡到192.168.1.2:80、192.168.1.3:80、192.168.1.4:80、192.168.1.5:80四台服务器。
  3.   用户访问http://blog.s135.com,将其负载均衡到192.168.1.7服务器的8080、8081、8082端口。
复制代码

  1. 以下为配置文件nginx.conf:
  2. user  www www;

  3. worker_processes 10;

  4. #error_log  logs/error.log;
  5. #error_log  logs/error.log  notice;
  6. #error_log  logs/error.log  info;

  7. #pid        logs/nginx.pid;

  8. #最大文件描述符
  9. worker_rlimit_nofile 51200;

  10. events
  11. {
  12.        use epoll;

  13.        worker_connections 51200;
  14. }

  15. http
  16. {
  17.        include       conf/mime.types;
  18.        default_type  application/octet-stream;

  19.        keepalive_timeout 120;

  20.        tcp_nodelay on;

  21.        upstream  www.s135.com  {
  22.                server   192.168.1.2:80;
  23.                server   192.168.1.3:80;
  24.                server   192.168.1.4:80;
  25.                server   192.168.1.5:80;
  26.        }

  27.        upstream  blog.s135.com  {
  28.                server   192.168.1.7:8080;
  29.                server   192.168.1.7:8081;
  30.                server   192.168.1.7:8082;
  31.        }

  32.        server
  33.        {
  34.                listen  80;
  35.                server_name  www.s135.com;

  36.                location / {
  37.                         proxy_pass        http://www.s135.com;
  38.                         proxy_set_header   Host             $host;
  39.                         proxy_set_header   X-Real-IP        $remote_addr;
  40.                         proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
  41.                }

  42.                log_format  www_s135_com  '$remote_addr - $remote_user [$time_local] $request '
  43.                                  '"$status" $body_bytes_sent "$http_referer" '
  44.                                  '"$http_user_agent" "$http_x_forwarded_for"';
  45.                access_log  /data1/logs/www.log  www_s135_com;
  46.        }

  47.        server
  48.        {
  49.                listen  80;
  50.                server_name  blog.s135.com;

  51.                location / {
  52.                         proxy_pass        http://blog.s135.com;
  53.                         proxy_set_header   Host             $host;
  54.                         proxy_set_header   X-Real-IP        $remote_addr;
  55.                         proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
  56.                }

  57.                log_format  blog_s135_com  '$remote_addr - $remote_user [$time_local] $request '
  58.                                  '"$status" $body_bytes_sent "$http_referer" '
  59.                                  '"$http_user_agent" "$http_x_forwarded_for"';
  60.                access_log  /data1/logs/blog.log  blog_s135_com;
  61.        }
  62. }
复制代码

作者: 方兆国    时间: 2012-06-21 14:42
回复 25# shang2010


    谢谢你啦
作者: 方兆国    时间: 2012-06-21 14:43
shang2010 发表于 2012-06-21 14:38
我给你贴一下,
worker_processes 10;
貌似开的线程略多啊,我只是worker_processes 1;

毕竟我的不是实用机器
作者: shang2010    时间: 2012-06-21 14:43
回复 26# 方兆国


    从示例上来看,人家是在用nginx做一个全面的网关均衡服务,,
作者: iceeggplant    时间: 2012-06-21 14:44
先mark下...
作者: 方兆国    时间: 2012-06-21 14:53
回复 28# shang2010


    额,配置的也并不是很多
作者: shang2010    时间: 2012-06-21 14:56
本帖最后由 shang2010 于 2012-06-21 17:15 编辑
方兆国 发表于 2012-06-21 14:53
回复 28# shang2010


我靠,nginx功能比不上apache,

这样够了的啊
作者: 方兆国    时间: 2012-06-21 15:04
回复 31# shang2010


    嘻嘻,我是说LS的那些缓存机制他没有用,还有伪静态也没有用

话说伪静态没用,只要让PHP或者Tomcat解析html文件,不管html文件内容是JPS的还是PHP的,都毫无压力的能正常访问,要伪静态配置没多少意思
作者: ltgzs777    时间: 2012-06-21 15:10
回复 19# 方兆国


     这是两个决然不同的缓存机制。
作者: yuhongchun    时间: 2012-06-21 16:09
提示: 作者被禁止或删除 内容自动屏蔽
作者: yuhongchun    时间: 2012-06-21 16:17
提示: 作者被禁止或删除 内容自动屏蔽
作者: shang2010    时间: 2012-06-21 17:18
方兆国 发表于 2012-06-21 15:04
回复 31# shang2010


恩,反正我看那配置是够简单的,作为学习材料蛮好的
作者: yuhongchun    时间: 2012-06-21 17:39
提示: 作者被禁止或删除 内容自动屏蔽
作者: Gray1982    时间: 2012-06-21 17:41
一、Nginx作为轻量级的负载均衡器,它较适用于哪种场景中,它与之LVS/HAProxy的对比,其优势在哪里?
首先它是轻量级的不适合做为最前端的负载,如果放在第二层会比较合适。四七层结合,还是不错的。
其次它的一些正则还是比较有用的,结合不同的架构来做很方便
至于安装什么的,我到是没什么感觉困难,主要是调优吧。

二、Nginx作为高抗并发的Web软件,与传统的Apache相比较为有优势,大家一般会将其哪种场景中,它与Apache相对,其优势在哪里?
据说的是在静态方面会很好,不过没对比过。但在处理连接数,性能,负载什么的不错。Apache可能在处理动态的会好一些吧,现在很少用apache了

三、Nginx作为Cache也越来越成熟了,与专业级的Squid/Varnish相比,大家更倾向于将其应用于哪种场景中,它与Squid/Varnish相比,优势又如何呢?
N做缓存可能是由于是因为加载的第三方模块,所以性能不如以上两个专业级的,在少量的缓存还是不错的。
Squid不多说了,老牌的,不过可能在大量的缓存时IO是问题
Varnish的新版本还是不错的,可以用内存来做,在缓存方面应该比前2个快。
以上三种缓存可能在管理上不是相同吧,专业级的会方便一些。Nginx需要自己写脚本,包括命中率也要自己写·········我是看了N久的日志才写好的

作者: action08    时间: 2012-06-21 17:47
yuhongchun 发表于 2012-06-21 16:09
大家都说Nginx好,我来说下它的不足之处吧:
一,在高并发环境下,图片型网站这种并发值超过3万以上的, ...


php会死掉?是资源不足,还是本身就有bug
作者: coralzd    时间: 2012-06-22 08:40
1、nginx 用于负载均衡方面 消耗内存小 速度快 负载低;正则表达式丰富,配置简单;第三方模块丰富,比如Upstream Fair Balancer 等等;可以抵御小型ddos攻击,这一点的确比lvs和haproxy好。
2.我的做法是nginx处理静态资源和处理php jsp等等资源,尤其是处理静态资源时,处理并发3万左右的时候,很流畅且稳定,消耗内存少,负载低。apache处理超过1万并发的时候,就有些力不从心了。
3.根据我的经验,nginx cache处理一定量大文件和小文件,尤其是在利用多核cpu情况下,跟varnish和squid 有的一拼,将经常访问的热点文件存放与内存中,这一点跟varnish相似,跟varnish不相伯仲,远远强于squid。但是在缓存海量文件数时,就一点力不从心了。
作者: coralzd    时间: 2012-06-22 08:43
yuhongchun 发表于 2012-06-21 16:17
5万并发下,Nginx的弱势就出来了

我的环境下nginx 处理静态资源跑到3万的时候,速度流畅,且消耗内存低。nginx用了google-perftools,来优化。
作者: coralzd    时间: 2012-06-22 08:48
yuhongchun 发表于 2012-06-21 16:09
大家都说Nginx好,我来说下它的不足之处吧:
一,在高并发环境下,图片型网站这种并发值超过3万以上的, ...


php 死掉的情况大多跟数据库及程序不合理有关。
作者: 开心Guo    时间: 2012-06-22 08:50
顶起啊
作者: yuhongchun    时间: 2012-06-22 09:09
提示: 作者被禁止或删除 内容自动屏蔽
作者: yuhongchun    时间: 2012-06-22 09:11
提示: 作者被禁止或删除 内容自动屏蔽
作者: 方兆国    时间: 2012-06-22 09:44
回复 36# shang2010


    嗯,其实我刚开始也是从百度上查的,看得多了就知道了
作者: 方兆国    时间: 2012-06-22 09:45
回复 42# coralzd


    我蛮喜欢JSP的,可是貌似这个不太主流
作者: 方兆国    时间: 2012-06-22 09:54
ltgzs777 发表于 2012-06-21 15:10
回复 19# 方兆国


这个从上面网友的介绍可以看出来的,cache是存在内存,store是存在磁盘
作者: yifangyou    时间: 2012-06-22 12:22
本帖最后由 yifangyou 于 2012-06-22 12:26 编辑

一、Nginx作为轻量级的负载均衡器,它较适用于哪种场景中,它与之LVS/HAProxy的对比,其优势在哪里?
答:Nginx的负载策略有权重,backup模式,权重模式比较适合于同时有多个web服务器进行服务的场景,具有自动检测每个web服务器是否存活(依据的是超时时间)
backup模式是适合于高可用场景,一般是挂载两天web服务端,一主一备。
它与之LVS/HAProxy的对比的优势:
1)再加上nginx的url重新功能,甚至能够实现读写分离。
2)能够对请求URL或者内容进行决定分配到那台机器。
3) 具有自动检查web服务器是否存活,若是web服务器挂了,可以尝试请求下一个服务器,不会像lvs转发之后就不管了。若是web服务器恢复了,可以继续转发请求。
4)backup模式是nginx特有的,这样可以提供可用性。
5)nginx有缓存模块,这样请求不一定每次都去请求web服务器。
6)安装简单明了,不像lvs那样这么多模式,还要到各个web端配置虚拟ip;也不会对路由器和交换机有诸多要求;
7)插件非常多,具有支持代理,cache,redis各种插件
插件开发简单,可以根据自己需要自己开发自己的插件

二、Nginx作为高抗并发的Web软件,与传统的Apache相比较为有优势,大家一般会将其哪种场景中,它与Apache相对,其优势在哪里?
答:nginx的并发能力能够达到上万次请求每秒,
我一般是把它作为apache的替代品。
他比apache的优势:
1.并发量是apache的几倍或者十几倍,节省服务器数量;
2.负载轻,nginx是多线程,并且支持多核,事件驱动,负载基本上能够在1以下,apache 2.4据说也是模仿这种方式提高服务能力。
3.后端是代理+fcgi模式使之能够支持不同的语言,应用调用完全有语言自身完成。


三、Nginx作为Cache也越来越成熟了,与专业级的Squid/Varnish相比,大家更倾向于将其应用于哪种场景中,它与Squid/Varnish相比,优势又如何呢?
答:我主要用于网站的伪静态化,想我公司的web是cms系统,直接访问非常慢,于是我用nginx做为cache实际上是设定缓存过期时间非常长,除了第一次请求外,这样所有的请求都不会请求到后面的web服务器上,这样就是实现了静态化。
和squid/varnish相比,nginx的优势是
1.配置简单,不会像squid那样几千行的配置文件,而且有很多难懂的缓存算法
2.nginx可以配置成缓存没有过期时,不会去发请求检查web端是否过期,缓存过期完全在于nginx自身控制。
3.nginx有一个清除缓存的插件,安装完后很容易清除某个目录或者文件的缓存。
4.nginx结合自带的url重写功能能够支持负责的缓存。


作者: aca_jingru    时间: 2012-06-22 22:57
nginx做反向代理工作在第七层,优点就是架设方便啊!!

不用考虑lvs 的那种网络环境,能ping通就能工作!

稳定性高,你有讲过nginx突然挂吗?

当然效率是不及lvs的效率高,因为lvs是4层的,修改ip数据包等直接内核处理当然要比应用层的nginx 快。

当然nginx有upstream 模块,就是传说中的均衡负载,加上之后开发的健康检查模块,支持ip-hash 等均衡负载。


作者: aca_jingru    时间: 2012-06-22 23:03


二、Nginx作为高抗并发的Web软件,与传统的Apache相比较为有优势,大家一般会将其哪种场景中,它与Apache相对,其优势在哪里?

nginx的语法比较简单。。至少我觉得比apache的简单。。大并发更是他的优势,当然要看瓶颈,很多时候最大的消耗是在后端数据库那块。。还要比较欣赏nginx的ngx_drizzle ,lua 模块,这些才是高效果的东西。传统的lnmp 和lnap,真没区别。。如果有的话就是nginx 的内存占用率真的比apache小很多很多。。
用nginx取代apache 也是不错的选择,从5.4起php-fpm就集成在php 的官方代码里了,可以看出php对nginx 的支持。。
作者: zhaoke0128    时间: 2012-06-22 23:28
回复 51# aca_jingru


    一、Nginx作为轻量级的负载均衡器,它较适用于哪种场景中,它与之LVS/HAProxy的对比,其优势在哪里?
   Nginx作为轻量级的负载均衡器,比较适合在中小型的web网站,对于7层的反向代理业有很好的效果,可以针对不同的频道,图片进行区分;Lvs对于稍大流量的网站,性能是毋庸置疑,Haproxy作为专业的反向代理软件,配置起来也很简单,对于中小型的网站,选择haproxy 4层配置起来很简单
二、Nginx作为高抗并发的Web软件,与传统的Apache相比较为有优势,大家一般会将其哪种场景中,它与Apache相对,其优势在哪里
   Nginx的抗高并发主要在于它选择epoll模型,在php环境下,Nginx与apache各有取舍,Nginx通过进程或者socket与php进行通信,对于HTTP长连接效果会好一点;apache通过modeules与php通信;Nginx的版本更新越来越快,也许安全问题也是要考虑的地方
三、Nginx作为Cache也越来越成熟了,与专业级的Squid/Varnish相比,大家更倾向于将其应用于哪种场景中,它与Squid/Varnish相比,优势又如何呢?
    对于Cache,我选择Nginx;选择Cache,我想也是分业务场景的,Varnish主要会把Cache存放在内存之中,Squid应用多年,功能强大自然不必说,squid对多核支持不好,对于一些中小型站点,我建议选择Nginx,Nginx web和Cache可以同时在web server,比较节省资源,Nginx提供第三方模块也很稳定,支持多核
作者: hzw0705    时间: 2012-06-23 10:06
从大部分回帖看来 nginx的应用与研究没有到他应有的地步,多数还只是应用在皮毛,nginx的强大完全不止于此。呵呵
多关注tengine和openresty项目的同学们应该比较清楚。
作者: ltgzs777    时间: 2012-06-23 10:41
能自己开发Web服务器更好, 何必对Nginx二次开发呢!不伦不类

作者: 方兆国    时间: 2012-06-23 16:05
回复 54# ltgzs777


    可并不是谁都可以开发出WEB服务器
作者: chichushanren    时间: 2012-06-23 16:45
支持一下!!
作者: 飞灰烟灭    时间: 2012-06-23 17:15
比较专业了jrotcusa.com。

作者: yuhongchun    时间: 2012-06-23 19:18
提示: 作者被禁止或删除 内容自动屏蔽
作者: chenyx    时间: 2012-06-23 21:13
shang2010 发表于 2012-06-21 13:57
嗯,我google了一下,nigix的负债均衡问题,下面有个简单示例关于负载均衡,从采用的方案都是以下两种,一 ...

你这个是简单的轮询的配置,nginx的upstream配置有3种,官方的wiki上有例子,包括iphash和权重的配置的文档
作者: chenyx    时间: 2012-06-23 21:15
回复 20# 方兆国


    这个我没发现,我的很正常.你的proxy_cache配置正常不?
作者: chenyx    时间: 2012-06-23 21:17
回复 28# shang2010


     作为web的负载均衡网关服务器来使用的
作者: chenyx    时间: 2012-06-23 21:19
回复 34# yuhongchun


   
Nginx+php5环境下,nginx倒很稳定,但php5容易死掉了~

    我的服务器还没到那个级别.php的fcgi可以做到别的服务器上的,不必放到nginx服务器上
作者: 方兆国    时间: 2012-06-23 23:33
回复 60# chenyx


    我做JSP时全用的是相对路径——据说这样好些,然后把用到的图片放在了Tomcat服务的目录下,然后用Nginx配的那个upstream,在Nginx的服务路径下没有留真实路径,只是把那几个server地址放了上去,然后其他的都正常,就是图片显示不出来
作者: ltgzs777    时间: 2012-06-24 08:05
回复 59# chenyx


    upstream-fair模块的功能在于它将进入的请求转发到一个最近最少“忙”的后台服务器,而不是使用RR(轮询)方式,它是一个用于对后端代理服务器实现公平“工作”的一个模块,它增强了标准的RR方式负载均衡,它通过跟踪“忙”的后台服务器(例如 Thin, Ebb, Mongrel)来均衡的载人不“忙”的后台服务器进程。

安装upstream-fair模块

    下面我们来下载并且安装这个模块:

下载upstream-fair模块

[root@mail ~]# wget https://nodeload.github.com/gnos ... fair/tarball/master
--08:37:53--  https://nodeload.github.com/gnos ... fair/tarball/master
Resolving nodeload.github.com... 207.97.227.252
Connecting to nodeload.github.com|207.97.227.252|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 10066 (9.8K) [application/octet-stream]
Saving to: `gnosek-nginx-upstream-fair-7171df8.tar.gz'

100%[================================>] 10,066      14.4K/s   in 0.7s   

08:37:56 (14.4 KB/s) - `gnosek-nginx-upstream-fair-7171df8.tar.gz' saved [10066/10066]
   
查看目录结构

[root@mail ~]# tar -zxvf gnosek-nginx-upstream-fair-7171df8.tar.gz
[root@mail gnosek-nginx-upstream-fair-7171df8]# tree
.
|-- README
|-- config
`-- ngx_http_upstream_fair_module.c

0 directories, 3 files
   
    目录结构很简单,需要查看一下README文件。

编译安装

[root@mail nginx-1.0.8]# ./configure --prefix=/usr/local/nginx-1.0.8-fair --add-module=/root/gnosek-nginx-upstream-fair-7171df8
[root@mail nginx-1.0.8]# make
[root@mail nginx-1.0.8]# make install
   

配置示例

upstream mongrel {
    fair;
    server 127.0.0.1:5000;
    server 127.0.0.1:5001;
    server 127.0.0.1:5002;
  }
   
指    令

    查看源代码:
   
static ngx_command_t  ngx_http_upstream_fair_commands[] = {

    { ngx_string("fair"),
      NGX_HTTP_UPS_CONF|NGX_CONF_ANY,
      ngx_http_upstream_fair,
      0,
      0,
      NULL },

    { ngx_string("upstream_fair_shm_size"),
      NGX_HTTP_MAIN_CONF|NGX_CONF_TAKE1,
      ngx_http_upstream_fair_set_shm_size,
      0,
      0,
      NULL },

      ngx_null_command
};

    可见该模块提供了以下两条指令:

指令名称:fair
功    能:启用“公平”功能。
语    法:fair
使用环境:upstream

指令名称:upstream_fair_shm_size
功    能:该指令设置用于存储有关繁忙后台服务器的信息的共享内存大小。默认值是8个内存页面,因此在大多数系统上是32k。
语    法:upstream_fair_shm_size size
使用环境:http
默 认 值:default upstream_fair_shm_size 32k

配置实例

http {

    ……

upstream_fair_shm_size 64k;

}

upstream mongrel {
    fair;
    server 127.0.0.1:5000;
    server 127.0.0.1:5001;
    server 127.0.0.1:5002;
  }

作者: chenyx    时间: 2012-06-24 08:15
回复 64# ltgzs777


    nginx的第三方插件还是很多的,比如清除cache的.
作者: chenyx    时间: 2012-06-24 08:18
回复 63# 方兆国


    你直接在客户端访问绝对地址的图片链接,nginx正常返回不?
作者: yifangyou    时间: 2012-06-24 10:30
回复 58# yuhongchun
我需要的是静态化功能,我一般就是忽略其他能够引起缓存过期的因素,因此命中率基本上是100%,需要修改时,手动刷新,或者设置缓存过期时间。{:3_203:}


   
作者: yifangyou    时间: 2012-06-24 10:32
回复 64# ltgzs777

差点忘了nginx还有这样的功能,不过我觉得实际上nginx判断的不上各个web服务器的负载,而是返回结果的时间长短
   
作者: coralzd    时间: 2012-06-24 17:20
yuhongchun 发表于 2012-06-22 09:09
我这里说是Nginx作为LB的情况,我们作为横向对比,在更高的并发环境中,Nginx的处理能力是最弱的,相反 ...


哈哈,haproxy确实比较厉害。
作者: coralzd    时间: 2012-06-24 17:21
方兆国 发表于 2012-06-22 09:45
回复 42# coralzd


哈哈,是的,php是主流,但是一些应用还是用jsp的。
作者: liuxingyuyuni    时间: 2012-06-24 23:58
非常好的贴子,很需要!这段时间一直在研究Nginx,高兴的是它和apache一样稳定,就是配置太麻烦了,暂时用一键包。
作者: 方兆国    时间: 2012-06-25 00:19
回复 70# coralzd


    中国移动,中国联通,中国电信,中国建设银行这四家是JSP的,其他的就不清楚了
其他的几家大银行用的都是ASP,大企业用PHP的很少
作者: 方兆国    时间: 2012-06-25 00:22
回复 66# chenyx


    这个没有试过,我是先用JSP做好之后,然后再简单的设置了那个upstream tomcat_Server,然后现在比较忙,也再没有调式过,当初用Nginx,就是看到CU上这方面的帖子比较多,好奇
作者: shang2010    时间: 2012-06-25 09:44
三、Nginx作为Cache也越来越成熟了,与专业级的Squid/Varnish相比,大家更倾向于将其应用于哪种场景中,它与Squid/Varnish相比,优势又如何呢?
我的网络不需要代理,所以目前没研究过Squid/Varnish.

这个问题就技术细节方面貌似谈得很少有深入啊,,我先google一下,
作者: yahoon    时间: 2012-06-25 10:53
回复 27# 方兆国


    与内核数量一致即可
作者: yahoon    时间: 2012-06-25 11:00
翻了这几天漏掉的帖子

感觉 总地来说, nginx是当做web前端用,尽可能的利用其高并发的能力
用反向代理的功能与后端service的进程通讯.
强大的负载均衡对多个后端进行request分发,且支持失败检测
本地的缓存功能,基本都是页面的一些静态文件,量不会太大.

现在nginx的开发也相当活跃,有很多二次开发的产品,如淘宝的tengine.
作者: ltgzs777    时间: 2012-06-25 13:26
Nginx和Tomcat的session处理分为两步:

第一步,解决Nginx和Tomcat的负载均衡;
第二步,解决Tomcat集群和Memcached存储会话。

我们的这个案例是这样的在IP为192.168.3.139这台机器上安装了Tomcat1和Memcached1,而在IP为192.168.3.140这个台机器上安装了Tomcat2和Memcached2,对于Tomcat1和Memcached1、Tomcat2和Memcached2只是一个叫法而已,它们是完全一样的。在配置时要实现以下功能,参考了如下的官方文档:

http://code.google.com/p/memcach ... tupAndConfiguration

看下面的图:
   
< Tomcat1>  < Tomcat2>
           .  \ /   .
.   X    .
.  / \   .
< Memcached1>  < Memcached2>

    在正常情况下,换句话说就是Tomcat1和Memcached1、Tomcat2和Memcached2都正常工作的时候,Tomcat1 会将session ID存储在Memcached2中,同理Tomcat2 会将session ID存储在Memcached1中,但是如果其中的一个Memcached出现了问题,与其对应的Tomcat就会将session ID存储在另一个Memcached中。为什么这样做呢?如果运行在同一台机器上Tomcat和Memcached同时倒掉(这种情况多数是系统崩溃)时,用户的会话不会丢失。

    这样的结构实现了只要有一个Tomcat、一个Memcached不失效就可以正常工作。

第一步,解决Nginx和Tomcat的负载均衡

    这一步比较简单,在Nginx的配置文件中添加如下内容:
   
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

   upstream  tomcat   {
              server   192.168.3.139:8080;
              server   192.168.3.140:8080;
    }

   server {
        listen       80;
        server_name  localhost;
      

location  / {
            root   html;
            index  index.html index.htm;
            proxy_pass        http://tomcat;
            proxy_set_header  X-Real-IP  $remote_addr;
            client_max_body_size  80m;
        }
……
}

……
}



然后再重新启动Nginx就可以了。

第二步,解决Tomcat集群和Memcached存储会话

这一步又分为两步来完成:一是要解决Tomcat集群,二是要解决Memcached存储会话。

第一步、解决Tomcat集群

    在这个案例中我们配置了两台Tomcat服务器,在两台不同的物理服务器上,它们的IP分别为192.168.3.139和192.168.3.140。

在IP为 192.168.3.139 的机器上添加如下配置:

    将以下内容添加在$CATALINA_HOME/server.xml中。


<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
                 channelSendOptions="8">

          <Manager className="org.apache.catalina.ha.session.DeltaManager"
                   expireSessionsOnShutdown="false"
                   notifyListenersOnReplication="true"/>

          <Channel className="org.apache.catalina.tribes.group.GroupChannel">
            <Membership className="org.apache.catalina.tribes.membership.McastService"
                        address="224.0.0.4"
                        port="45564"
                        frequency="500"
                        dropTime="3000"/>
            <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
                      address="192.168.3.139"
                      port="4000"
                      autoBind="100"
                      selectorTimeout="5000"
                      maxThreads="6"/>

            <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
              <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
            </Sender>
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
          </Channel>

          <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
                 filter=""/>
          <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>

          <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
                    tempDir="/tmp/war-temp/"
                    deployDir="/tmp/war-deploy/"
                    watchDir="/tmp/war-listen/"
                    watchEnabled="false"/>

          <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
          <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
        </Cluster>
   
注意将以上的配置添加在原配置文件中:

      <!--
      <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
      -->
   
的下面即可。

    另外还需要执行以下四条命令:

[root@mail tomcat]#mkdir  /tmp/war-temp/
[root@mail tomcat]#mkdir  /tmp/war-deploy/
[root@mail tomcat]#mkdir  /tmp/war-listen/
   
这三条命令没什么可解释的,这是上面配置中的需要。

[root@mail tomcat]# route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0
   
这条命令的功能在于添加多播路由,对于是不是eth0设备要根据具体的情况设定。

在IP为 192.168.3.140 的机器上添加如下配置:

    将以下内容添加在$CATALINA_HOME/server.xml中。


<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
                 channelSendOptions="8">

          <Manager className="org.apache.catalina.ha.session.DeltaManager"
                   expireSessionsOnShutdown="false"
                   notifyListenersOnReplication="true"/>

          <Channel className="org.apache.catalina.tribes.group.GroupChannel">
            <Membership className="org.apache.catalina.tribes.membership.McastService"
                        address="224.0.0.4"
                        port="45564"
                        frequency="500"
                        dropTime="3000"/>
            <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
                      address="192.168.3.140"
                      port="4000"
                      autoBind="100"
                      selectorTimeout="5000"
                      maxThreads="6"/>

            <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
              <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
            </Sender>
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
          </Channel>

          <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
                 filter=""/>
          <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>

          <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
                    tempDir="/tmp/war-temp/"
                    deployDir="/tmp/war-deploy/"
                    watchDir="/tmp/war-listen/"
                    watchEnabled="false"/>

          <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
          <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
        </Cluster>
   
同样,注意将以上的配置添加在原配置文件中:

      <!--
      <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
      -->
   
的下面即可。

    另外还需要执行以下四条命令:

[root@mail tomcat]#mkdir  /tmp/war-temp/
[root@mail tomcat]#mkdir /tmp/war-deploy/
[root@mail tomcat]#mkdir /tmp/war-listen/
   
这三条命令没什么可解释的,这是上面配置中的需要。

[root@mail tomcat]# route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0
   
这条命令的功能在于添加多播路由,对于是不是eth0设备要根据具体的情况设定。

第二步、解决Memcached存储会话

    由于我们使用了Memcached,因此需要下载它的客户端java包,如果你能够自己写,那么也可以自己去写,不过这种活我们做运维的多数是干不了,干不了就使用开源的吧,google的开源替我们做了,需要我们做的就是下载了。

下载下面的jar包,并且将其放置在$CATALINA_HOME/lib目录下,在两台装有Tomcat的机器上做同样的操作,就是说在两个Tomcat服务器的$CATALINA_HOME/lib目录下都添加以下jar包。

[root@mail lib]#wget http://memcached-session-manager.googlecode.com/ \
> files/memcached-session-manager-tc7-1.4.1.jar
[root@mail lib]wget  http://memcached-session-manager.googlecode.com/ \
> files/msm-javolution-serializer-jodatime-1.3.0.jar
[root@mail lib] wget http://memcached-session-manager.googlecode.com/ \
> files/msm-javolution-serializer-cglib-1.3.0.jar
[root@mail lib]wget http://memcached-session-manager.googlecode.com/ \
> files/minlog-1.2.jar
[root@mail lib]wget http://memcached-session-manager.googlecode.com/ \
> files/msm-kryo-serializer-1.4.0.jar
[root@mail lib]wget http://memcached-session-manager.googlecode.com/ \
> files/kryo-1.03.jar
[root@mail lib]wget http://memcached-session-manager.googlecode.com/ \
> files/reflectasm-0.9.jar
[root@mail lib]wget http://cloud.github.com/downloads/magro/ \
> kryo-serializers/kryo-serializers-0.8.jar
[root@mail lib]wget http://mirrors.ibiblio.org/pub/mirrors/ \
> maven2/asm/asm/3.2/asm-3.2.jar
[root@mail lib]wget http://spymemcached.googlecode.com/ \
> files/memcached-2.5.jar

   
    然后再在$CATALINA_HOME/context.xml添加配置内容,两台Tomcat的$CATALINA_HOME/context.xml文件中都添加。

在192.168.3.139的机器上添加:

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
    memcachedNodes="n1:192.168.3.139:11211 n2:192.168.3.140:11211"
     failoverNodes="n1"
    requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
   
将以上的内容放置在原文件<Context> … </Context>元素之内。

在192.168.3.140的机器上添加:

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
    memcachedNodes="n1:192.168.3.139:11211 n2:192.168.3.140:11211"
     failoverNodes="n2"
    requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
   
同样添加在原文件<Context> … </Context>元素之内。

    好了,现在所有的配置都完成了。


作者: to407    时间: 2012-06-25 16:54
为什么我一直感觉毛子的技术不靠呢。。。 并发量大但太虚了。。。提高parallelism 但对于concurrency 就不这么明显了~~
作者: ltgzs777    时间: 2012-06-25 17:45
回复 78# to407


     贴出测试
作者: lsstarboy    时间: 2012-06-25 20:43
一、Nginx作为轻量级的负载均衡器,它较适用于哪种场景中,它与之LVS/HAProxy的对比,其优势在哪里?
我用的最多的是反向代理,一个前端多个后端,很轻松就布置完成,不需要很多的配置。

二、Nginx作为高抗并发的Web软件,与传统的Apache相比较为有优势,大家一般会将其哪种场景中,它与Apache相对,其优势在哪里?

近几年,除了cgi的应用外,我基本上放弃了apache,对于web系统,nginx+php-fpm组合非常好棒,不仅速度快,安全方面也比较好控制。

三、Nginx作为Cache也越来越成熟了,与专业级的Squid/Varnish相比,大家更倾向于将其应用于哪种场景中,它与Squid/Varnish相比,优势又如何呢?

没用nginx作为cache服务器,感觉squid在控制方面比较灵活,性能也很高。
作者: xianzi25    时间: 2012-06-26 08:56
现在我们使用作为反向代理
作者: ronaldohf    时间: 2012-06-26 10:16
不是不能开发,项目开发考虑的是时间,成本。那些大公司的团队开发这个问题应该不大,性能问题比较难控制。自己开发的不一定比这些要好。回复 55# 方兆国


   
作者: sania9    时间: 2012-06-26 11:07
1.haproxy与lvs的做负载均衡的能力要比nginx强,而且负载均衡的算法比nginx要多,但是nginx可以做各种的策略配置,分流分离的配置,非常灵活,而且本身还可以做反向代理与web服务器。
2.与apache比较,曾经的测试,在相同机器(2c8g)上nginx跑到1.8万没有错误(客户端限制停止),apache跑到8.5k的时候出现大量报错,说nginx抗并发能力比apache要强确实是显而易见的。
3.作为缓存,实际场景里面来说,nginx不如varnish,squid因为测试中命令率一般而弃用,varnish实际生产使用经验过程中稍微比nginx高出一筹。
作者: kangwenyi    时间: 2012-06-26 11:20
顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶顶
作者: kns1024wh    时间: 2012-06-26 12:03
coralzd 发表于 2012-06-22 08:43
我的环境下nginx 处理静态资源跑到3万的时候,速度流畅,且消耗内存低。nginx用了google-perftools,来优 ...


google-perftools这个工具可让开发创建更强大的应用程序,特别是那些用C++模版开发的多线程应用程序,包括TCMalloc, heap-checker, heap-profiler 和cpu-profiler
作者: rootsecurity    时间: 2012-06-26 13:17
本帖最后由 rootsecurity 于 2012-06-26 13:20 编辑

简单描述一下我以前做过的关于nginx的项目,希望共勉。
1、nginx作为web服务器
   这个架构比较简单,机器当时是用的Dell R410 16GRAM  160G SATA。nginx在编译之前加了几个插件。
   下面这个是我优化服务器/etc/sysctl.conf的配置。

  1. net.ipv4.ip_forward = 1
  2. net.ipv4.netfilter.ip_conntrack_generic_timeout = 60
  3. net.ipv4.netfilter.ip_conntrack_icmp_timeout = 3
  4. net.ipv4.netfilter.ip_conntrack_udp_timeout_stream = 10
  5. net.ipv4.netfilter.ip_conntrack_udp_timeout = 3
  6. net.ipv4.netfilter.ip_conntrack_tcp_timeout_close = 3
  7. net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 3
  8. net.ipv4.netfilter.ip_conntrack_tcp_timeout_last_ack = 3
  9. net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 3
  10. net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 3
  11. net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 300
  12. net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_recv = 3
  13. net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent = 3
  14. net.ipv4.tcp_fin_timeout = 3
  15. net.ipv4.tcp_syncookies = 1
  16. net.ipv4.tcp_max_orphans = 262144
  17. net.ipv4.tcp_max_syn_backlog = 262144
  18. net.ipv4.tcp_syn_retries = 1
  19. net.ipv4.tcp_synack_retries = 1
  20. net.ipv4.netfilter.ip_conntrack_max = 655040
  21. net.ipv4.tcp_keepalive_time = 300
  22. net.ipv4.tcp_keepalive_probes = 3
  23. net.ipv4.tcp_rfc1337 = 1
  24. net.ipv4.tcp_abort_on_overflow = 1
  25. net.ipv4.tcp_tw_reuse = 1
  26. net.ipv4.tcp_tw_recycle = 1
  27. net.ipv4.ip_local_port_range = 1024 65535
  28. net.core.rmem_max = 16777216
  29. net.core.wmem_max = 16777216
  30. net.ipv4.tcp_rmem = 4096 87380 16777216
  31. net.ipv4.tcp_wmem = 4096 65536 16777216
  32. net.core.netdev_max_backlog = 30000
  33. net.core.somaxconn = 262144
  34. fs.file-max = 655350
复制代码
2、nginx作为web反向代理
采用比较简单的upstream来做web反向代理,使用轮训机制。
3、nginx+keepalived


采用nginx作为web服务器的原因就是它不仅是一个web服务器,还是一个七层负载均衡软件。而且语法比Apache相对简单,配置文件通俗易懂。

作者: hb756091339    时间: 2012-06-26 13:44
学习一下
作者: liuxuejin    时间: 2012-06-26 14:34
hzw0705 发表于 2012-06-23 10:06
从大部分回帖看来 nginx的应用与研究没有到他应有的地步,多数还只是应用在皮毛,nginx的强大完全不止于此。 ...
这个牛B, 希望这个兄弟说说经验和不是皮毛的东西。
作者: liuxuejin    时间: 2012-06-26 14:35
sania9 发表于 2012-06-26 11:07
1.haproxy与lvs的做负载均衡的能力要比nginx强,而且负载均衡的算法比nginx要多,但是nginx可以做各种的策略 ...
lvs 的负载均衡比Nginx强 这个估计都知道。但是 haproxy 有没有数据对比???一直都想知道这个东西跟 nginx  lighttpd 比 怎么样。
作者: Purple_Grape    时间: 2012-06-27 09:57
nginx在前端做负载均衡,加上少许内存缓存,感觉挺好的。

至于跟其他类比,我觉得,没有最强,没有最好,只有最合适的,

这个需要在制定解决方案时把握好分寸,关键在人。
作者: super-nn    时间: 2012-06-27 10:39
写得很不错
作者: coralzd    时间: 2012-06-27 13:15
nginx 做反向代理是非常不错的
作者: pl_piaoling    时间: 2012-06-27 13:23
希望能多看到一些实践的内容,呵呵,:wink:
作者: pl_piaoling    时间: 2012-06-27 13:27
有没有关于Nginx专栏,求推荐一下
作者: ltgzs777    时间: 2012-06-27 13:45
回复 94# pl_piaoling


    http://space.itpub.net/27043155
作者: MYSQLER    时间: 2012-06-27 14:55
一、Nginx作为轻量级的负载均衡器,它较适用于哪种场景中,它与之LVS/HAProxy的对比,其优势在哪里?

  1. Nginx在反向代理,与php-fcgi结合做php站点(目前来说个人博客用此方案的据多),Nginx在做Cache方面效果也还不错,Nginx工作在7层,LVS工作在4层,Nginx在Rewrite方面更加灵活
复制代码
二、Nginx作为高抗并发的Web软件,与传统的Apache相比较为有优势,大家一般会将其哪种场景中,它与Apache相对,其优势在哪里?
  1. 我主要把Nginx+keepalived用在前端做反向代理,与Apache比较Nginx更加配置和管理更加方便和灵活,处理并发的能力也很强
复制代码
三、Nginx作为Cache也越来越成熟了,与专业级的Squid/Varnish相比,大家更倾向于将其应用于哪种场景中,它与Squid/Varnish相比,优势又如何呢?
  1. 我的图片服务器大多都是Varnish,其中一台为了测试用的nginx的Cache,能力和Varnish不相上下,测试有半年了,没有Down过.
复制代码

作者: 方兆国    时间: 2012-06-27 17:02
回复 82# ronaldohf


    不过专门制作的性能好些,不用考虑兼容问题
作者: qwemgh    时间: 2012-06-27 21:28
各位高手,请教个nginx的应用, nginx 能不能 proxy 后端是 resin (启用SSL得), SSL 不能在前端 nginx上启用,只能在后端resin上。 小弟我记了很久,代理是可以用,但是SSL的效果就没起作用了。  
作者: pl_piaoling    时间: 2012-06-28 11:33
回复 95# ltgzs777
好像内容挺少的,
不过还是谢谢了:wink:

   
作者: MYSQLER    时间: 2012-06-28 14:07
qwemgh 发表于 2012-06-27 21:28
各位高手,请教个nginx的应用, nginx 能不能 proxy 后端是 resin (启用SSL得), SSL 不能在前端 nginx上启 ...


应该是不行的,因为我这边是在tomcat上做ssl的应用,也试过在加上nginx,一样不成功,看来是只能在Nginx端做SSL了
作者: qwemgh    时间: 2012-06-28 16:12
回复 100# MYSQLER


    谢了, 看来是要另想法子了




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2