centos 6.5 Nginx 安装负载均衡以及动静分离
1.下载nginx
方法一
wget http://nginx.org/download/nginx-1.11.6.tar.gz
方法二
http://nginx.org/en/download.html在Nginx官网手动下载
2.解压nginx的gz包
tar -zxvf nginx-1.11.6.tar.gz
这里我选择安装在/usr/tools/目录
3.安装ngnix依赖
3.1安装gcc
yum -y install gcc-c++
3.2安装最基础的模块 pcre-devel
yum -y install pcre-devel
3.3 安装gzip
yum -y install zlib-devel
4.初始化配置
cd /usr/tools/nginx-1.11.6切换到nginx安装目录
运行 ./configure --prefix=/usr/tools/ngin(指定安装路径)进行初始化配置
5.预编译 make
6.运行makeinstall进行编译译
编译完成后会生生成了/usr/tools/nginx/目录
7.启动nginx
cd/usr/local/nginx/sbin 执行./nginx
8.验证nginx是否启动成功
执行curl http://localhost 出现下面信息表示启动成功
9.修改防火墙规则
修改Nginx所在主机的防火墙配置:vi /etc/sysconfig/iptables,将nginx使用的端口添加到允许列表中。
例如:-AINPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT (表示允许80端口通过)
修改Tomcat所在主机的防火墙配置:vi /etc/sysconfig/iptables,将tomcat使用的端口添加到允许列表中。
例如:-A INPUT -m state --state NEW -m tcp -ptcp --dport 8080 -j ACCEPT (表示允许8080端口通过)
如果主机上有多个tomcat的话,则按此规则添加多条,修改对应的端口号即可。
保存后重启防火墙:service iptables restart
10.添加Nginx 自启动
vi/etc/init.d/nginx
在脚本中添加如下命令:
#!/bin/bash
# nginx Startup script for the Nginx HTTP Server
# it is v.0.0.2 version.
#chkconfig: - 85 15
# description: Nginx is a high-performance web and proxy server.
# Ithas a lot of features, but it's not for everyone.
# processname: nginx
# pidfile: /var/run/nginx.pid
#config: /usr/tools/nginx/conf/nginx.conf
nginxd=/usr/tools/nginx/sbin/nginx
nginx_config=/usr/tools/nginx/conf/nginx.conf
nginx_pid=/var/run/nginx.pid
RETVAL=0
prog="nginx"
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -x $nginxd ] || exit 0
# Start nginx daemons functions.
start() {
if [ -e $nginx_pid ];then
echo"nginx already running...."
exit 1
fi
echo -n $"Starting $prog: "
daemon $nginxd -c ${nginx_config}
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch /var/lock/subsys/nginx
return $RETVAL
}
#Stop nginx daemons functions.
stop() {
echo -n $"Stopping $prog: "
killproc $nginxd
RETVAL=$?
echo
[ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx/var/run/nginx.pid
}
# reload nginx service functions.
reload() {
echo -n $"Reloading $prog: "
#kill -HUP `cat ${nginx_pid}`
killproc $nginxd -HUP
RETVAL=$?
echo
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
restart)
stop
start
;;
status)
status $prog
RETVAL=$?
;;
*)
echo$"Usage: $prog {start|stop|restart|reload|status|help}"
exit1
esac
exit $RETVAL
注意红色加粗部分,需要将路径改为自己机器的相应路径。
接着,设置文件的访问权限:
chmod a+x /etc/init.d/nginx (a+x参数表示 ==> all user canexecute 所有用户可执行)
最后将ngix加入到rc.local文件中,这样开机的时候nginx就默认启动了
vi /etc/rc.local
添加
/etc/init.d/nginx start
保存并退出下次重启就会生效,实现nginx的自启动。
11.添加nginx 负载均衡
cd /usr/tools//nginx/conf/
vi nginx.conf 打开nginx配置文件
在http段加入以下代码
upstream myservice{
server 127.0.0.1:8001 ; #每个负载均衡的Tomcat的地址
server 127.0.0.1:0002 weight=3; # 权重,默认为1,权重越大接收的请求越多
}
server{
listen 80;
server_name myservice; #这个名字必须是上面的upstream后面的名字
location / {
proxy_pass http://114.115.214.147;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr; #告诉nginx发送数据要返回请求者的地址和真实ip
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
upstream模块常用参数说明:
server 192.168.0.100:80 | 负载均衡后端RealServer的IP或者域名,端口不写的话默认为80。高并发场景用域名,再通过DNS进行负载均衡 |
weight=5 | 权重,默认为1,权重越大接收的请求越多 |
max_fails=2 | 最大尝试的失败次数,默认为1,0表示禁止失败尝试 |
fail_timeout=10s | 失败超时时间,默认是10秒,通常3s左右比较合适 |
backup | 热备配置,前段RealServer出现问题后会自动上线backup服务器 |
down | 标志服务器不可用,这个参数通常配合IP_HASH使用 |
12. 动静分离 location执行规则是从上往下执行所以这个配置要放在 location / 前面
location ^~ /statics/ {
# 匹配任何以 / statics / 开始的请求,并停止匹配 其它location
alias/a/;
#过期30天,静态文件不怎么更新,过期可以设大一点,
#如果频繁更新,则可以设置得小一点。
expires 30d;
}
12.1 alias 和root 的区别
12.1.1.toot的用法
location /static/image/ {
root /local_path/image/;
}
这样配置的结果就是当客户端请求/static/image/cat.png 的时候,
Nginx把请求映射为/local_path/image/static/image/cat.png
12.1.2再看alias的用法
location /static/image/ {
alias /local_path/image/;
}
这时候,当客户端请求 /static/image/cat.png 的时候,
Nginx把请求映射为/local_path/image/cat.png