免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1593 | 回复: 1
打印 上一主题 下一主题

nginx在openBSD下跑反向代理负载均衡 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-01-10 22:11 |只看该作者 |倒序浏览
nginx在openBSD下跑反向代理负载均衡







1,本文引用的资料:
         首先感谢张宴关于nginx.conf的详细配置的详解,http://blog.s135.com ,但我今天只做了最简单的,所以那些详细的日志啦、缓存啦什么都没有根据具体的虚拟主机做具体设定。
         然后感谢开发OpenBSD和Redhat的那些牛人,并感谢IBM提供的这个页面http://www.ibm.com/developerworks/cn/web/wa-lo-nginx/  现在貌似打不开,我是看的本机另存的页面。
         感谢young_king,国内的OpenBSD资料少的可怜啊,还要谢谢您的搭建OpenBSD+Nginx+php+mysql的教程贴,希望您以后多发这类帖子哦?(在本站的转帖http://www.linuxtone.org/thread-1822-1-1.html
         感谢论坛的地头蛇老曹大人NetSeek,想想这段时间里老曹可为小曹的一些幼稚问题郁闷个够呛,几欲拍桌子砸键盘,不要生气啊,俺基础差点,但总会有进步的。
         同时国际惯例感谢下小鱼儿、老冉、老高、老陈等牛银……感谢一下一直在使用但也一直未掏钱的Vmware        
2,本文的实验环境:
         当时做完了OpenBSD+Nginx+php+mysql的实验(在本站的转帖http://www.linuxtone.org/thread-1822-1-1.html)直接将该虚拟机克隆两份。如果对下文中的“二号机、三号机”配置有兴趣的童鞋可以看看那个帖子
         一号机,(192.168.118.135)将旧的和mysql/php有关系的nginx.conf干掉,重写nginx.conf。也就是说不启用php/mysql,只用本机的nginx做反向代理。
         二号机,(192.168.118.136)保持着原有的架构,并在/var/nginx/html下面新建一个index.php页面,页面内容自定啦,但必须和下面的三号机有所区别。
         三号机,(192.168.118.137)保持着原有的架构,并在/var/nginx/html下面新建一个index.php页面,页面内容自定啦,但必须和上面的二号机有所区别。        
        四号机,(192.168.118.132)以前做实验用过的一个redhat5的机器,是一个tomcat服务器,只装了jdk和tomcat并设置了环境变量(如何设置这个不用说了吧?)。
         客户机,本人的winxp,也是上面四个试验机的宿主机,改过了本机的hosts文件。C:\WINDOWS\system32\drivers\etc\hosts ,这个文件没后缀名,但可以用写字板或记事本打开。加入如下内容:
                 192.168.118.135                test1.com
                 192.168.118.135                test2.com
                 192.168.118.135                test3.com
         也就是说,要把三个域名的IP都指到一号试验机上去。
3,首先启动二、三、四号机器,在测试机上打开这三台机器的web页面,确认各自的nginx、php、tomcat工作正常,其中二、三号机器是nginx+php,用的80端口,四号机器一个裸奔的tomcat,用的 8080端口。

4,如下是重写并可应用的一号机的nginx.conf文件。对部分内容我做了特殊标注,大部分配置可以参考张宴的blog或本站关于nginx设定的一些文章。
  1. cat  /etc/nginx/nginx.conf     
  2. #user nobody;
  3. worker_processes 1;

  4. error_log  /var/log/nginx/error.log  crit;
  5. pid        /var/run/nginx.pid;
  6. #这里的nginx是用OpenBSD自己pkg 包管理系统装上去的,所以log等信息位置和编译安装的不太一样。

  7. worker_rlimit_nofile 51200;
  8. events
  9. {
  10.      use kqueue;
  11. #epoll是linux最优模式,经实验,在openBSD下不可用这种模式。百度之发现有如下模式:
  12. #
  13. #nginx以module的方式提供了select语义的多种实现:poll   devpoll  epoll  eventport  kqueue  rtsig后面4种,都是BSD/Linux为加速IO操作而提供的异步IO模型
  14. #
  15. #我不知道该用哪个模式,就随便乱试,发现用kqueue可以跑起来,就用这种模式了。如果有大侠知道哪个模式效率更高更适合OpenBSD,请高手赐教
  16.      worker_connections 51200;
  17. }
  18. http
  19. {
  20.      include       mime.types;
  21.      default_type  application/octet-stream;
  22.      #charset  gb2312;
  23.      
  24.     server_names_hash_bucket_size 128;
  25.      client_header_buffer_size 32k;
  26.      large_client_header_buffers 4 32k;
  27.       
  28.      sendfile on;
  29.      tcp_nopush     on;
  30.      keepalive_timeout 3;
  31. #为了做测试,故意把keepalive改小的,生产环境设置60s吧。
  32.      tcp_nodelay on;
  33.      #gzip on;
  34.      #gzip_min_length  1k;
  35.      #gzip_buffers     4 16k;
  36.      #gzip_http_version 1.0;
  37.      #gzip_comp_level 2;
  38.      #gzip_types       text/plain application/x-javascript text/css application/xml;
  39.      #gzip_vary on;
  40.      upstream  test1.com  {
  41.          server   192.168.118.136:80;
  42.          server   192.168.118.137:80;
  43.       
  44.      }

  45.     upstream  test2.com  {
  46.          server   192.168.118.136:80 weight=10;
  47.          server   192.168.118.137:80;
  48.    # weight是权重的意思,默认权重是1,
  49.          
  50.      }

  51.     upstream  test3.com
  52.          {
  53.                  server   192.168.118.132:8080;

  54.         }

  55. server {
  56.          listen   80;
  57.          server_name test1.com;
  58.                  #这里的test1是监听的客户端访问的域名
  59.          location /{
  60.          proxy_pass              http://test1.com;
  61.                  #这里的test1是上文提到的upstream啦,别和客户访问的域名弄混了。
  62.          proxy_set_header  X-Real-IP  $remote_addr;
  63.          }
  64.          }



  65. server {
  66.          listen   80;
  67.          server_name test2.com;
  68.          location /{
  69.          proxy_pass              http://test2.com;
  70.          proxy_set_header  X-Real-IP  $remote_addr;
  71.          }
  72.          }

  73. server {
  74.          listen   80;
  75.          server_name test3.com;
  76.          location /{
  77.          proxy_pass              http://test3.com;
  78.          proxy_set_header  X-Real-IP  $remote_addr;
  79.          }
  80.          }
复制代码
____________________________________________________   
5,启动一号机的nginx,测试开始了。
在本机访问http://test1.com/ http://test2.com/  http://test3.com/
请注意test1是否在二号、三号机之间不停切换?在上图中写到要让二号三号机上的index.php文件不太一样,就是为了区分两台web服务器的。如果不怎么切换,请考虑你的浏览器的缓存问题。如果还不切换,可以考虑down掉一台机器的nginx,看访问请求是否会转到另一台服务器上。
test2和test1的情况类似,只是test2做了权重设置,所以二号机应用的几率要比三号机大很多,如果总是轮不到三号机接任务,可以考虑更改权重实验一下,也可以考虑把二号机的nginx暂停一下。
test3的要求很简单,能转到四号机的8080端口,把tomcat的那个默认控制界面show出来就可以了。
6,测试暂告一段落,有时间研究一下张宴在CU线下活动发布的那个幻灯片上的那些高级参数,研究好了会把新的nginx.conf贴出来分享给大家。

论坛徽章:
0
2 [报告]
发表于 2012-01-10 22:11 |只看该作者
谢谢分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP