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
解压
# tar zxvf nginx-1.10.0.tar.gz
# 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;
}
}
}