详解 Nginx 负载均衡和反向代理配置和优化

详解 Nginx 负载均衡和反向代理配置和优化

什么是负载均衡和反向代理?

负载均衡是指在Web服务器和应用服务器之间进行请求的分布,通过将请求分配到不同的服务器,以均衡每个服务器上的总请求数,从而提高整个系统的性能、可靠性以及可扩展性。而反向代理则是指,代理服务器接收来自客户端的请求,并将其转发至后端服务器,返回后端服务器响应后再将结果返回给客户端。

Nginx 反向代理和负载均衡的配置

假设我们有两台服务器,它们的IP地址分别为192.168.1.100192.168.1.101,使用Nginx进行反向代理和负载均衡配置。

1. 安装Nginx

我们可以通过包管理器安装Nginx,如Debian/Ubuntu系统中可以使用以下命令:

sudo apt update
sudo apt install nginx

2. 配置 Nginx

编辑 /etc/nginx/nginx.conf 文件,修改以下内容:

http {
    upstream backend {
        server 192.168.1.100;
        server 192.168.1.101;
    }
    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://backend;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
}

此配置中使用了 upstream 用于定义后端服务器组,其中包含了两个后端服务器 IP地址 。server 中则监听在80端口,定义了反向代理的地址。proxy_pass 则将请求转发至后端服务器组 backend。另外,proxy_set_header 则用于追加请求相关头部信息。

3. 优化 Nginx 负载均衡和反向代理

Nginx 负载均衡和反向代理的性能取决于如何调整 keepaliveworker_processworker_connectionssendfile 等参数。例如,我们可以这样通过修改 /etc/nginx/nginx.conf 文件进行优化:

http {
    keepalive_timeout 65; # 客户端长连接超时时间
    client_max_body_size 64m; # 客户端 body 最大可上传的大小
    proxy_connect_timeout 5s; # 连接后端服务器超时时间
    proxy_send_timeout 60s; # 后端服务器响应后向客户端发送响应的超时时间
    proxy_read_timeout 60s; # 后端服务器响应前等待的超时时间
    sendfile on; # 开启sendfile
    tcp_nopush on; # 优化网络性能,最大化利用带宽
    tcp_nodelay on; # 优化网络性能,最大化利用带宽

    upstream backend {
        server 192.168.1.100;
        server 192.168.1.101;
    }
    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://backend;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
}

其中,keepalive_timeout用于设置客户端长连接超时时间, client_max_body_size 可以限制客户端上传的大小。 proxy_connect_timeoutproxy_send_timeoutproxy_read_timeout 分别是连接后端服务器超时时间、后端服务器响应后向客户端发送响应的超时时间和后端服务器响应前等待的超时时间,需要根据网络情况适当进行调整。最后,sendfile开启sendfile机制是提高文件传输性能的一个好方法,tcp_nopush则是优化网络性能,最大化利用带宽,tcp_nodelay同样也是优化网络性能,最大化利用带宽的参数。

示例演示

示例1:负载均衡

假设我们有3台服务器,它们的IP地址分别为192.168.1.100192.168.1.101192.168.1.102,并且这些服务器上安装了Web服务。此时,我们可以使用 Nginx 进行负载均衡配置,来实现请求的均衡分发。

  1. 安装 Nginx,在指定服务器上执行以下命令:
sudo apt install nginx
  1. 修改 /etc/nginx/nginx.conf 文件,添加如下配置:
http {
    upstream backend {
        server 192.168.1.100;
        server 192.168.1.101;
        server 192.168.1.102;
    }
    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://backend;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }
}

此配置中使用了 upstream 用于定义后端服务器组,其中包含了三个后端服务器 IP地址 。server 中则监听在80端口,定义了反向代理的地址。proxy_pass 则将请求转发至后端服务器组 backend,实现了负载均衡。

  1. 重启 Nginx 服务:
sudo systemctl restart nginx
  1. 访问网站,在浏览器中输入 http://example.com/,并多次刷新,此时我们会发现请求被均衡分发至后端服务器,实现了负载均衡的目的。

示例2:HTTPS反向代理

当我们需要实现HTTPS协议的反向代理时,需要安装 SSL 证书,并对 Nginx 进行修改配置:

  1. 安装 SSL 证书

通过任何一家 SSL 证书颁发机构申请证书后,得到证书的两个文件 cert.pemprivkey.pem,将它们放在 /etc/nginx/ssl/ 目录中。

  1. 配置 Nginx

修改 /etc/nginx/nginx.conf 文件,增加以下内容:

http {
        upstream backend {
                server 10.10.10.1:80;
                server 10.10.10.2:80;
        }

        server {
                listen              443 ssl;
                server_name         example.com;
                ssl_certificate     /etc/nginx/ssl/cert.pem;
                ssl_certificate_key /etc/nginx/ssl/privkey.pem;
                ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
                ssl_ciphers         HIGH:!aNULL:!MD5;

                location / {
                        proxy_pass      http://backend;
                        proxy_set_header        Host $host;
                        proxy_set_header        X-Real-IP $remote_addr;
                        proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                        proxy_set_header        X-Forwarded-Proto $scheme;
                }
        }
}

其中,ssl_certificatessl_certificate_key分别指定 SSL 证书和私钥文件的路径。ssl_protocols用于指定使用的 SSL 协议类型, ssl_ciphers可指定加密算法类型。此配置同样也使用了 upstream 定义了后端服务器组,使用 proxy_pass实现了反向代理。

  1. 重启 Nginx 服务:
sudo systemctl restart nginx
  1. 访问网站,在浏览器中输入 https://example.com/,此时我们会看到已经实现了 HTTPS 的反向代理。

以上就是 Nginx 反向代理和负载均衡配置和优化的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解 Nginx 负载均衡和反向代理配置和优化 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • nginx proxy_pass 指令

    文档 Nginx 官方文档 https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass Nginx 服务器的反向代理 proxy_pass 配置方法讲解 https://www.cnblogs.com/lianxuan1768/p/8383804.html Syntax: prox…

    Nginx 2023年4月13日
    00
  • nginx 配置反向代理根目录到其他服务器

      location /detail/json { if ( $uri = “/detail/json” ) { rewrite “/detail/json” /index.html break; } alias /data/web/static_test/detail/json/$host/; proxy_pass http://192.168.1.2; …

    Nginx 2023年4月12日
    00
  • 基于nginx的WebSocket反向代理

    系统:windows 版本:nginx 1.4.5 配置内容: location ~ \.do$ {             proxy_pass   http://192.168.20.102:8080;              proxy_http_version 1.1;             proxy_set_header Upgrade $h…

    Nginx 2023年4月9日
    00
  • nginx+keepalived 高可用主从配置详解

    nginx+keepalived 高可用主从配置详解 简介 在互联网产品中,高可用性是非常重要的需求。使用nginx作为反向代理服务器,可以提高网站的访问速度和安全性。同时,使用keepalived可以实现nginx高可用主从配置,确保服务的持续稳定运行。 安装nginx 首先,我们需要安装nginx服务器。可以使用yum命令安装: yum install …

    Nginx 2023年5月16日
    00
  • nginx 配置文件备份

    1. /etc/nginx/sites-enabled/default 的原始文件 # You may add here your # server { # … # } # statements for each of your virtual hosts to this file ## # You should look at the followin…

    Nginx 2023年4月10日
    00
  • CentOS配置Nginx官方Yum源及安装Ngnix

    一、前置操作 为了排除其它因素干扰,可以先暂时关闭防火墙和SELinux,待成功后再逐一开启 # 关闭防火墙 systemctl stop firewalld.service # 关闭SELinux setenforce 0 二、Nginx官方yum源配置 新建repo文件 vim /etc/yum.repos.d/nginx.repo 根据实际版本、架构配…

    Nginx 2023年4月16日
    00
  • Nginx基础location语法及功能配置实例

    下面我将为您详细讲解“Nginx基础location语法及功能配置实例”的完整攻略。 Nginx基础location语法 在Nginx中,location指令是非常常见也非常重要的指令之一,用于匹配请求URI,并根据匹配的URI进行不同的处理。 location语法格式如下: location [=|~|~*|^~] uri { … } 其中: = 表示精确…

    Nginx 2023年5月16日
    00
  • nginx简单配置多个server的方法

    nginx简单配置多个server的方法攻略 步骤一:安装nginx 首先,我们需要在服务器上安装nginx。如果是Ubuntu或Debian系统,可以使用以下命令进行安装: sudo apt-get update sudo apt-get install nginx 如果是CentOS或Red Hat系统,可以使用以下命令进行安装: yum install…

    Nginx 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部