nginx反向代理服务器及负载均衡服务配置方法

 更新时间:2023年12月27日 16:06:56   作者:傲骄鹿先生  
正向代理一般是在客户端设置代理服务器,通过代理服务器转发请求,最终访问到目标服务器,这篇文章主要介绍了nginx反向代理服务器及负载均衡服务配置方法,需要的朋友可以参考下

一、正向代理与反向代理

正向代理:是一个位于客户端和原始服务器(oricin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。

正向代理的典型用途是为在防火墙内的局域网客户端提供访问internet的途径。

正向代理一般是在客户端设置代理服务器,通过代理服务器转发请求,最终访问到目标服务器。

反向代理:反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源,反向代理服务器负责将请求转发给目标服务器。用户不需要知道目标服务器的地址,也无须在用户端作任何设定。

配置示例:

server {
  listen       80;
  server_name  example.com;
  location / {
    proxy_pass http://backend_servers;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
  }
}

上述配置中,listen指定了Nginx监听的端口,server_name指定了反向代理的域名。

location /表示将所有的请求都转发给后端服务器。proxy_pass配置后端服务器的地址,可以是IP地址或域名。proxy_set_header可以设置一些HTTP头信息,如Host和X-Real-IP等。

二、负载均衡

负载均衡是指将请求分发到多个后端服务器,以达到提高系统的性能和可用性的目的。Nginx支持多种负载均衡算法,如轮询、加权轮询、最少连接等。

配置示例:

upstream backend_servers {
  server 192.168.0.1:8080;
  server 192.168.0.2:8080;
  server 192.168.0.3:8080;
  server 192.168.0.4:8080;
}
server {
  listen       80;
  server_name  example.com;
  location / {
    proxy_pass http://backend_servers;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
  }
}

Nginx支持以下几种负载均衡方式:

  • 轮询(Round Robin):这是默认的负载均衡方式。每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
  • 权重(Weight):不同的后端服务器可能机器的配置和当前系统的负载并不相同,因此Nginx允许指定每个服务器的处理能力。权重越高,分配的请求越多。
  • IP Hash:每个请求的IP的hash结果分配,每个访客固定访问一个后端服务器,可以解决session的问题。
  • 最少连接(Least Connections):优先分配给当前连接数最少的服务器,适用于请求处理时间相差较大的情况。
  • URL Hash:按照访问URL的hash结果来分配请求,使得每个URL定向到同一个后端服务器,可以在后端服务器生成缓存的情况下提高系统效率。

以上负载均衡方式中,轮询、权重和IP Hash是Nginx内置支持的,最少连接和URL Hash需要使用Nginx的第三方模块,如ngx_http_upstream_least_conn_module和ngx_http_upstream_hash_module。

(1)基于轮询的算法

原理是每一个请求按时间顺序逐一被分发到不同的应用服务器,如果接收请求的应用服务器挂了,并且请求超过最大失败次数max_fails(1次),则在失效时间fail_timeout(10秒)内不会再转发请求到该节点~

upstream defaultReverseProxyServer{
    server 192.168.0.1:8080; 
    server 192.168.0.2:8080; 
}

(2)基于权重的算法

原理是每一个请求按权重被分发到不同的应用服务器,同样,如果接收请求的应用服务器挂了,并且请求超过最大失败次数max_fails(默认1次或可设置N次),则在失效时间fail_timeout(默认10秒,可设置N秒)内,不会再转发请求到该节点~

upstream weightReverseProxyServer{
    server 192.168.0.1:8080 weight=10 max_fails=2 fail_timeout=5s;
    server 192.168.0.2:8080 weight=5 max_fails=2 fail_timeout=5s;
}

(3)基于ip_hash的算法

原理是每一个请求按用户访问IP的哈希结果分配,如果请求来自同一个用户IP则固定这台IP访问一台应用服务器,该算法可以有效解决动态网页中存在的session共享问题。

upstream ipHashReverseProxyServer{
    ip_hash;
    server 192.168.0.1:8080;
    server 192.168.0.2:8080;
}

一般使用的是基于权重的算法,因为现在很多情况下都是集群部署,而且集群下的各个服务器资源大多都是不均匀的,资源高的则分配权重高一些,资源低的则分配权重低一些,这种情况使用基于权重的负载均衡算法,可以更高效的利用资源和提高并发处理能力~

到此这篇关于nginx反向代理服务器及负载均衡服务配置的文章就介绍到这了,更多相关nginx负载均衡内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • nginx配置多个前端项目实现步骤

    nginx配置多个前端项目实现步骤

    本文主要介绍了nginx配置多个前端项目实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • Nginx如何封禁IP和IP段的实现

    Nginx如何封禁IP和IP段的实现

    这篇文章主要介绍了Nginx如何封禁IP和IP段的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • 在Nginx中拦截特定用户代理的教程

    在Nginx中拦截特定用户代理的教程

    这篇文章主要介绍了在Nginx中拦截特定用户代理的教程,并为这些被拦截的用户设置一个黑名单以方便管理,需要的朋友可以参考下
    2015-06-06
  • Nginx 反向代理缓存(proxy_cache)的实现

    Nginx 反向代理缓存(proxy_cache)的实现

    Nginx的缓存加速功能是由proxy_cache和fastcgi_cache两个功能模块完成,本文主要介绍了Nginx 反向代理缓存(proxy_cache)的实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-05-05
  • 详解nginx安装过程并代理下载服务器文件

    详解nginx安装过程并代理下载服务器文件

    Nginx是一款轻量级的web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行,这篇文章主要介绍了详解nginx安装过程并代理下载服务器文件,需要的朋友可以参考下
    2022-02-02
  • nginx打印请求头日志方法(亲测可用)

    nginx打印请求头日志方法(亲测可用)

    之前想用nginx打印收到的请求的请求头,但是只找到打印请求体的,没有打印请求头的,本文就来介绍一下nginx打印请求头日志方法,感兴趣的可以了解一下
    2023-11-11
  • Nginx构建Tomcat集群的操作方法

    Nginx构建Tomcat集群的操作方法

    nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器,这篇文章主要介绍了Nginx构建Tomcat集群的问题,需要的朋友可以参考下
    2022-01-01
  • nginx部署.net core站点的方法

    nginx部署.net core站点的方法

    这篇文章主要介绍了nginx部署.net core站点的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • 详解Nginx反向代理到Tomcat服务器

    详解Nginx反向代理到Tomcat服务器

    本篇文章主要介绍了详解Nginx反向代理到Tomcat服务器,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • Nginx服务状态监控的方法

    Nginx服务状态监控的方法

    这篇文章主要介绍了Nginx服务状态监控的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06

最新评论