Nginx反向代理-负载均衡

Nginx反向代理-负载均衡

nginx是什么?

  • Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名!能够支持高达 50,000 个并发连接数的响应。
  • Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。

nginx的作用

反向代理

正向代理:正向代理就是在客户端配置代理服务器,通过代理服务器去进行互联网操作。例如:使用VPN上网。
在这里插入图片描述

反向代理:客户端发送请求到反向代理服务器,由反向代理服务器去选择目标服务器获取它的数据,在返回给客户端。此时反向代理服务器和目标服务器对外就是一台服务器,暴露的是代理服务器地址,隐藏了真实的服务器地址当代理为服务端服务时,该代理就是反向代理。
在这里插入图片描述

配置反向代理

将请求转发到单个后端服务器

upstream tomcat-portal {
    server 192.168.25.141:8080;
}

server {
    listen 80;
    server_name www.pinyougou.com;

    location / {
        proxy_pass http://tomcat-portal;
        index index.html;
    }
}

将请求转发到多个后端服务器,并实现负载均衡

upstream tomcat-portal {
    server 192.168.25.141:8080;
    server 192.168.25.141:8180;
    server 192.168.25.141:8280;
}

server {
    listen 80;
    server_name www.pinyougou.com;

    location / {
        proxy_pass http://tomcat-portal;
        index index.html;
    }
}

反向代理的作用

1、保证各种服务在内网的安全,防止web攻击,大型网站,通常将反向代理服务器作为公网访问地址,各种服务则处于内网之中。
2、负载均衡,反向代理服务器选择合适的服务进行请求,实现流量的负载均衡。
3、限流,当流量实在过大时,机器无法负载的情况下,反向代理服务器可以限制一部分流量请求服务(让请求失败)。
4、数据预处理,处理请求的数据,让服务端能够识别,以及在服务端的响应数据中添加或者删除一些数据等。

Nginx的安装(Centos7)

1 .安装编译环境

#安装编译环境
[root@localhost /]# yum install -y gcc gcc-c++

2 .安装pcre库、zlib库和openssl库

pcre(Perl Compatible Regular Expressions)是一个Perl库,是一个用C语言编写的正则表达式的函数库,是轻量级的函数库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库

zlib是一套通用的解压缩开源库,提供了内存(in-memory)压缩和解压函数,能检测解压出来的数据完整性。nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。

openssl,即open secure sockets layer,是一个开源的安全套接字层的密码库。包括常用的密码加解密算法、常用的密钥算法、证书管理和SSL协议。nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。

#安装pcre库
[root@localhost /]# yum install -y pcre pcre-devel

#安装zlib库
[root@localhost /]# yum install -y zlib zlib-devel

#安装openssl库
[root@localhost /]# yum install -y openssl-devel

3.下载nginx

wget http://nginx.org/download/nginx-1.22.1.tar.gz

在这里插入图片描述

4.解压nginx

tar -zvxf nginx-1.22.1.tar.gz

在这里插入图片描述

5.编译安装

cd nginx-1.22.1

编译并指定安装位置,执行安装之后会创建指定文件夹home/nginx

./configure --prefix=/home/nginx \
--with-pcre \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_stub_status_module \
--with-http_auth_request_module \
--with-http_image_filter_module \
--with-http_slice_module \
--with-mail \
--with-threads \
--with-file-aio \
--with-stream \
--with-mail_ssl_module \
--with-stream_ssl_module 

在这里插入图片描述
在这里插入图片描述

6.执行编译并安装

make && make install

在这里插入图片描述

7.进入指定文件夹home/nginx

查看nginxi目录下的文件

#进入nginx
cd /home/nginx
#查看nginxi目录下的文件
ls -al

在这里插入图片描述

8.查看sbin目录下的文件

在这里插入图片描述

9.启动nginx

[root@luocheng sbin]# ./nginx

在这里插入图片描述

10.查看nginx的状态

[root@luocheng sbin]# ps -ef | grep nginx

在这里插入图片描述

11.用本地浏览器服务虚拟机地址

在这里插入图片描述

Nginx负载均衡及其策略

负载均衡

在多个服务器的情况下,我们将请求发放到各个服务器上,将原先请求集中到单个服务器的情况改为将请求发送到多个服务器上,将负载分发到不同的服务器,也就是负载均衡。(可以给性能高的服务器多发一些请求、性能低的少发一些请求)
在这里插入图片描述

负载均衡策略

目前Nginx服务器的upstream模块支持6种方式的分配:

算法名称说明
轮询默认方式
weight权重方式
ip_hash依据IP分配方式
least_conn依据最少连接方式
url_hash依据URL分配方式
fair依据响应时间方式

轮询


是upstream模块负载均衡默认的策略。每个请求会按时间顺序逐个分配到不同的后端服务器。轮询不需要额外的配置。

upstream tomcat-portal {
    server 192.168.25.141:8080 weight=1;
    server 192.168.25.141:8180;
    server 192.168.25.141:8280;
}

server {
    listen 80;
    server_name www.pinyougou.com;

    location / {
        proxy_pass http://tomcat-portal;
        index index.html;
    }
}

weight加权[加权轮询]


weight=number:用来设置服务器的权重,默认为1,权重数据越大,被分配到请求的几率越大;该权重值,主要是针对实际工作环境中不同的后端服务器硬件配置进行调整的,所有此策略比较适合服务器的硬件配置差别比较大的情况

upstream tomcat-portal {
    server 192.168.25.141:8080 weight=10;
    server 192.168.25.141:8180 weight=5;
    server 192.168.25.141:8280 weight=3;
}

server {
    listen 80;
    server_name www.pinyougou.com;

    location / {
        proxy_pass http://tomcat-portal;
        index index.html;
    }
}

ip_hash


当对后端的多台动态应用服务器做负载均衡时,ip_hash指令能够将某个客户端IP的请求通过哈希算法定位到同一台后端服务器上。这样,当来

自某一个IP的用户在后端Web服务器A上登录后,在访问该站点的其他URL,能保证其访问的还是后端web服务器A。

语法ip_hash
默认值-
位置upstream
upstream tomcat-portal {
    ip_hash;
    server 192.168.25.141:8080 ;
    server 192.168.25.141:8180 ;
    server 192.168.25.141:8280 ;
}

server {
    listen 80;
    server_name www.pinyougou.com;

    location / {
        proxy_pass http://tomcat-portal;
        index index.html;
    }
}

注意:

使用ip_hash指令无法保证后端服务器的负载均衡,可能导致有些后端服务器接收到的请求多,有些后端服务器接收的请求少,而且设置后端服务器权重等方法将不起作用。

least_conn


最少连接,把请求转发给连接数较少的后端服务器。轮询算法是把请求平均的转发给各个后端,使它们的负载大致相同;但是,有些请求占用的时间很长,会导致其所在的后端负载较高。这种情况下,least_conn这种方式就可以达到更好的负载均衡效果。

upstream tomcat-portal {
    least_conn;
    server 192.168.25.141:8080 ;
    server 192.168.25.141:8180 ;
    server 192.168.25.141:8280 ;
}

server {
    listen 80;
    server_name www.pinyougou.com;

    location / {
        proxy_pass http://tomcat-portal;
        index index.html;
    }
}

url_hash


按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,要配合缓存命中来使用。同一个资源多次请求,可能会到达不同的服务器上,导致不必要的多次下载,缓存命中率不高,以及一些资源时间的浪费。而使用url_hash,可以使得同一个url(也就是同一个资源请求)会到达同一台服务器,一旦缓存住了资源,再此收到请求,就可以从缓存中读取。

upstream tomcat-portal {
   hash &request_uri;
    server 192.168.25.141:8080 ;
    server 192.168.25.141:8180 ;
    server 192.168.25.141:8280 ;
}

server {
    listen 80;
    server_name www.pinyougou.com;

    location / {
        proxy_pass http://tomcat-portal;
        index index.html;
    }
}

fair


fair采用的不是内建负载均衡使用的轮换的均衡算法,而是可以根据页面大小、加载时间长短智能的进行负载均衡。

upstream tomcat-portal {
    fair;
    server 192.168.25.141:8080 ;
    server 192.168.25.141:8180 ;
    server 192.168.25.141:8280 ;
}

server {
    listen 80;
    server_name www.pinyougou.com;

    location / {
        proxy_pass http://tomcat-portal;
        index index.html;
    }
}

换的均衡算法,而是可以根据页面大小、加载时间长短智能的进行负载均衡。

upstream tomcat-portal {
    fair;
    server 192.168.25.141:8080 ;
    server 192.168.25.141:8180 ;
    server 192.168.25.141:8280 ;
}

server {
    listen 80;
    server_name www.pinyougou.com;

    location / {
        proxy_pass http://tomcat-portal;
        index index.html;
    }
}
  • 34
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Nginx是一款常用的Web服务器软件,也可以用作反向代理负载均衡器。反向代理是指Nginx作为一个中间服务器,接收客户端的请求并将其转发给后端的服务器处理,然后将响应返回给客户端。 负载均衡是指将客户端请求分发到多个后端服务器上,以平衡服务器的负载。Nginx通过使用不同的负载均衡算法,如轮询、IP哈希、最少连接等,来决定将请求发送给哪个后端服务器。 配置Nginx作为反向代理负载均衡器需要进行一些设置。首先,你需要在Nginx配置文件中定义后端服务器的地址和端口,并设置相应的负载均衡策略。例如: ```nginx http { upstream backend { server backend1.example.com; server backend2.example.com; server backend3.example.com; } server { listen 80; server_name mywebsite.com; location / { proxy_pass http://backend; } } } ``` 在上述配置中,`upstream`指令定义了后端服务器的地址,在这里我们指定了三个后端服务器。`server`块中的`location`指令指定了代理转发的路径,`proxy_pass`指令将请求转发给定义的`upstream`。 这样配置之后,当有客户端请求到达Nginx时,Nginx会根据定义的负载均衡策略将请求转发给后端服务器,并将后端服务器的响应返回给客户端。 这就是Nginx反向代理负载均衡的基本概念和配置方法。希望对你有所帮助!如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值