文章重点记录nginx负载均衡。
为了实验,我习惯性的先上拓扑图,如下:
我们的案例需求如下,前端nginx做负载均衡,并处理静态页面,使用location查询过滤将动态页面交由后端apache服务器集群做处理。并由nginx回显内容输出。
nginx负载均衡服务器安装配置:
[root@lvs /]# rpm -qa | grep pcre pcre-devel-6.6-2.el5_1.7 pcre-6.6-2.el5_1.7 # pcre的作用是为nginx提供兼容perl的正则表达式,使nginx支持HTTP Rewrite模块. [root@lvs ~]# wget http://nginx.org/download/nginx-0.8.53.tar.gz [root@lvs nginx-0.8.53]# ./configure --with-http_stub_status_module[root@lvs nginx-0.8.53]# make && make install# --with-http_stub_status_module 可以用来启用nginx的nginxStatus功能,以监控nginx当前状态。在继续配置之前,需要先了解我们要做什么。我只想做个基本的实验来看下nginx的负载均衡是如何工作的,所以我的实验设计是这样的。
当我们访问192.168.182.131/index.html 时,由于是静态页面,交给nginx本身处理,如果我们访问 192.168.182.131/test.php时,配置location匹配 .php 后缀,并交由后端apache集群来处理,至于集群会以什么样的方式来处理,后面用到时再说。
[root@lvs conf]# pwd /usr/local/nginx/conf [root@lvs conf]# vim nginx.conf user nobody; worker_processes 1; # 指定nginx要开启的进程数,建议一个CPU的内核就处理一个进程,所以如果是4核CPU,就指定4个进程数。 events { use epoll; worker_connections 1024; } # use epoll 是指nginx的工作模式,epoll是比较高效的工作模式,对于 #linux/unix平台,epoll是首选模式。# worker_connections 是一个进程的最大连接数。由此即可算出最大的客户端数量:max_client = worker_processes * worker_connections; http { server { listen 80; server_name 192.168.182.131; index index.html; root /usr/local/nginx/html; charset gb2312; upstream MyServer { ip_hash; server 192.168.182.132:80; server 192.168.182.133:80; } location ~* .*.php$ { proxy_pass http://MyServer; } } }