Nginx是俄罗斯人Igor Sysoev编写的轻量级Web服务器,它不仅是一个高性能的静态HTTP和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。
高并发处理能力强、擅长处理静态请求、反向代理、均衡负载。
1.下载安装nginx
Nginx官方网址 http://nginx.org/en/download.html
我用的是这个,在安装Nginx前,最好先配置好Linxu系统,并克隆两台以上虚拟机,后面的反向代理和负载均衡要用到。
采用源码编译的方式安装Nginx!
(1)安装Nginx依赖的库
yum install gcc gcc-c++ pcre pcre-devel openssl openssl-devel zlib zlib-devel vim -y
(2)创建存放源文件的文件夹
cd /opt # 进入opt目录下
mkdir apps # 创建apps目录,用于存放源文件以及解压后的文件
(3)通过Xftp上传nginx-1.16.1.tar.gz文件到Linux虚拟机的opt/apps目录下
(4)解压 Nginx压缩包
cd /opt/apps
tar -zxvf nginx-1.16.1.tar.gz # 解压
(5)配置configure
#进入/opt/apps/nginx-1.16.1目录下
cd /opt/apps/nginx-1.16.1
#首先创建/var/tmp/nginx/client目录
mkdir –p /var/tmp/nginx/client
#执行配置命令
./configure --prefix=/opt/nginx --with-http_ssl_module --with-http_gzip_static_module --error-log-path=/var/log/nginx/nginx.log --pid-path=/var/log/nginx/pid
(6)编译
make
(7)安装
make install
(8)启动
cd /opt/nginx/sbin
./nginx
启动nginx进程后,在浏览器中输入虚拟机的ip地址
2.反向代理之负载均衡
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。这个时候,对于客户端来说,感觉不到内部目标服务器的存在。
反向代理的作用:
1.保证内网的安全,阻止web攻击,大型网站,通常将反向代理作为公网访问地址,Web服务器是内网.
2.负载均衡,通过反向代理服务器来优化网站的负载.
所谓的负载均衡(Load Balancing),就是将对请求的处理分摊到多个操作单元上进行。这个均衡是指在大批量访问前提下的一种基本均衡,并非是绝对的平均。对于 Web 工程中的负载均衡,就是将相同的 Web 应用部署到多个不同的 Web 服务器上,形成多个 Web 应用服务器。当请求到来时,由负载均衡服务器负责将请求按照事先设定好的比例向 Web 应用服务器进行分发,从而增加系统的整体吞吐量。
我准备三台虚拟机,一台是作为Nginx服务器,ip地址为192.168.1.15,另外两台作为web服务器,是原来建的,ip地址分别为192.168.1.150和192.1681.1.22。
upstream rss{
server 192.168.1.150:888 weight=1;#端口可加可不加,我的150的80端口被占用了
server 192.168.1.22:80 weight=2;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
# root html;
#index index.html index.htm;
proxy_pass http://rss/;
}
}
配置文件最好能读懂,知到哪一步在做什么,这样才不会错。
把http块下的keepalive_timeout设置为0,便于看出负载切换的效果
keepalive_timeout 0;
退出编辑后
service nginx restart#重启nginx
另外两台web服务器,只需下载httpd
yum install httpd -y
再编辑一下/var/www/html/index.html
cd /var/www/html
vim index.html
#分别写入
from 192.168.1.22
from 192.168.1.150
便于观察。
启动两台虚拟机上的httpd服务
service httpd start
浏览器输入本机ip192.168.1.15,发现页面输出为from 192.168.1.22or150.多次刷新还会切换。
说明反向代理、负载均衡配置成功。
3.负载均衡策略
轮询:nginx默认就是轮询其权重都默认为1,服务器处理请求的顺序:ABABABABAB…
# 默认负载权重是一样的
upstream rss{
server 192.168.1.150;
server 192.168.1.22;
}
加权轮询:跟据配置的权重的大小而分发给不同服务器不同数量的请求。如果不设置,则默认为1。下面服务器的请求顺序为:ABBABBABBABBABB…
# 加权轮训
upstream rss{
server 192.168.1.22 weight=1;
server 192.168.1.150 weight=2;
}
ip_hash:nginx会让相同的客户端ip请求相同的服务器。
upstream rss{
server 192.168.1.22;
server 192.168.1.150;
ip_hash;
}
热备:如果你有2台服务器,当一台服务器发生事故时,才启用第二台服务器给提供服务。服务器处理请求的顺序:AAAAAA突然A挂啦,BBBBBBBBBBBBBB…
upstream rss{
server 192.168.1.22;
server 192.168.1.150 backup; #热备
}
两个重要的负载均衡配置的状态参数
- max_fails:允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误。
- fail_timeout:在经历了max_fails次失败后,暂停服务的时间。max_fails可以和fail_timeout一起使用。
upstream rss {
server 192.168.218.52 weight=2 max_fails=2 fail_timeout=2;
server 192.168.218.53 weight=1 max_fails=2 fail_timeout=1;
#server 服务器的ip 权重 最大失败次数 暂停服务的时间
}