- 论坛徽章:
- 0
|
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设定的一些文章。- cat /etc/nginx/nginx.conf
- #user nobody;
- worker_processes 1;
-
- error_log /var/log/nginx/error.log crit;
- pid /var/run/nginx.pid;
- #这里的nginx是用OpenBSD自己pkg 包管理系统装上去的,所以log等信息位置和编译安装的不太一样。
-
- worker_rlimit_nofile 51200;
- events
- {
- use kqueue;
- #epoll是linux最优模式,经实验,在openBSD下不可用这种模式。百度之发现有如下模式:
- #
- #nginx以module的方式提供了select语义的多种实现:poll devpoll epoll eventport kqueue rtsig后面4种,都是BSD/Linux为加速IO操作而提供的异步IO模型
- #
- #我不知道该用哪个模式,就随便乱试,发现用kqueue可以跑起来,就用这种模式了。如果有大侠知道哪个模式效率更高更适合OpenBSD,请高手赐教
- worker_connections 51200;
- }
- http
- {
- include mime.types;
- default_type application/octet-stream;
- #charset gb2312;
-
- server_names_hash_bucket_size 128;
- client_header_buffer_size 32k;
- large_client_header_buffers 4 32k;
-
- sendfile on;
- tcp_nopush on;
- keepalive_timeout 3;
- #为了做测试,故意把keepalive改小的,生产环境设置60s吧。
- tcp_nodelay on;
- #gzip on;
- #gzip_min_length 1k;
- #gzip_buffers 4 16k;
- #gzip_http_version 1.0;
- #gzip_comp_level 2;
- #gzip_types text/plain application/x-javascript text/css application/xml;
- #gzip_vary on;
- upstream test1.com {
- server 192.168.118.136:80;
- server 192.168.118.137:80;
-
- }
-
- upstream test2.com {
- server 192.168.118.136:80 weight=10;
- server 192.168.118.137:80;
- # weight是权重的意思,默认权重是1,
-
- }
-
- upstream test3.com
- {
- server 192.168.118.132:8080;
-
- }
-
- server {
- listen 80;
- server_name test1.com;
- #这里的test1是监听的客户端访问的域名
- location /{
- proxy_pass http://test1.com;
- #这里的test1是上文提到的upstream啦,别和客户访问的域名弄混了。
- proxy_set_header X-Real-IP $remote_addr;
- }
- }
-
- server {
- listen 80;
- server_name test2.com;
- location /{
- proxy_pass http://test2.com;
- proxy_set_header X-Real-IP $remote_addr;
- }
- }
-
- server {
- listen 80;
- server_name test3.com;
- location /{
- proxy_pass http://test3.com;
- proxy_set_header X-Real-IP $remote_addr;
- }
- }
复制代码 ____________________________________________________
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贴出来分享给大家。 |
|