Linux中配置Nginx反向代理、负载均衡

Nginx是俄罗斯人Igor Sysoev编写的轻量级Web服务器,它不仅是一个高性能的静态HTTP和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。
高并发处理能力强、擅长处理静态请求、反向代理、均衡负载。

1.下载安装nginx

Nginx官方网址 http://nginx.org/en/download.html
Linux中配置Nginx反向代理、负载均衡_第1张图片
我用的是这个,在安装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目录下
Linux中配置Nginx反向代理、负载均衡_第2张图片
(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地址
Linux中配置Nginx反向代理、负载均衡_第3张图片

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。
Linux中配置Nginx反向代理、负载均衡_第4张图片


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.多次刷新还会切换。
Linux中配置Nginx反向代理、负载均衡_第5张图片
Linux中配置Nginx反向代理、负载均衡_第6张图片
说明反向代理、负载均衡配置成功。

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   权重   最大失败次数   暂停服务的时间
}

你可能感兴趣的:(nginx,linux,负载均衡)