nginx的负载均衡是通过nginx的upstream模块和proxy_pass反向代理来实现的。


依赖包及工具

#yum install -y wget gcc pcre pcre-devel zlib-devel zlib  openssl openssl-devel


nginx下载地址  http://nginx.org/en/download.html


第一步 安装nginx



下载

# cd /usr/local/src/ 

# wget http://nginx.org/download/nginx-1.10.0.tar.gz



KVM虚拟化搭建nginx负载均衡 和lamp 架构(三 nginx负载均衡)_nginx

解压

# tar zxvf nginx-1.10.0.tar.gz

KVM虚拟化搭建nginx负载均衡 和lamp 架构(三 nginx负载均衡)_反向代理_02

# cd nginx-1.10.0

安装

# ./configure --prefix=/usr/local/nginx --with-pcre


错误

./configure: error: the HTTP rewrite module requires the PCRE library.

You can either disable the module by using --without-http_rewrite_module

option, or install the PCRE library into the system, or build the PCRE library

statically from the source with nginx by using --with-pcre=<path> option.

解决方法:

# yum install -y pcre-devel 


# make && make install && echo $?


# /usr/local/nginx/sbin/nginx

启动nginx服务


第二步 编写nginx启动脚本,并加入系统服务


[root@localhost ~]# vim /etc/init.d/nginx

#!/bin/bash

# chkconfig: - 30 21

# description: http service.

# Source Function Library

. /etc/init.d/functions

# Nginx Settings

NGINX_SBIN="/usr/local/nginx/sbin/nginx"

NGINX_CONF="/usr/local/nginx/conf/nginx.conf"

NGINX_PID="/usr/local/nginx/logs/nginx.pid"

RETVAL=0

prog="Nginx"

start() {

echo -n $"Starting $prog: "

mkdir -p /dev/shm/nginx_temp

daemon $NGINX_SBIN -c $NGINX_CONF

RETVAL=$?

echo

return $RETVAL

}

stop() {

echo -n $"Stopping $prog: "

killproc -p $NGINX_PID $NGINX_SBIN -TERM

rm -rf /dev/shm/nginx_temp

RETVAL=$?

echo

return $RETVAL

}

reload(){

echo -n $"Reloading $prog: "

killproc -p $NGINX_PID $NGINX_SBIN -HUP

RETVAL=$?

echo

return $RETVAL

}

restart(){

stop

start

}

configtest(){

$NGINX_SBIN -c $NGINX_CONF -t

return 0

}

case "$1" in

start)

start

;;

stop)

stop

;;

reload)

reload

;;

restart)

restart

;;

configtest)

configtest

;;

*)

echo $"Usage: $0 {start|stop|reload|restart|configtest}"

RETVAL=1

esac

exit $RETVAL


[root@LNMP html]# chmod 755 /etc/init.d/nginx

赋予执行权限

[root@LNMP html]# chkconfig --add nginx

加入启动列表

[root@LNMP html]# chkconfig  nginx  on

开机启动

[root@LNMP html]# service nginx start

正在启动 Nginx:                                           [确定]

[root@LNMP html]# service nginx stop

停止 Nginx:        [确定]

# service nginx configtest

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful


# /usr/local/nginx/sbin/nginx -t

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

(检查语法)

第三步 修改配置文件

# vim /usr/local/nginx/conf/nginx.conf



user nobody nobody;

worker_processes 2;

error_log /usr/local/nginx/logs/nginx_error.log crit;

pid /usr/local/nginx/logs/nginx.pid;

worker_rlimit_nofile 51200;

events

{

    use epoll;

    worker_connections 6000;

}


http

        {

    upstream myweb1 {

        server 192.168.244.143:80;

        server 192.168.244.144:80;

                }

    server {

              listen       80;

              server_name  192.168.244.145;

              location / {

                  proxy_pass http://myweb1;

                  proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;

                  proxy_set_header Host $host;

                  proxy_set_header X-Forwarded-For $remote_addr;

                         }

           }

       }

KVM虚拟化搭建nginx负载均衡 和lamp 架构(三 nginx负载均衡)_负载均衡_03