详解 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正反向代理及负载均衡等功能实现配置代码实例

    我来为你详细讲解如何配置Nginx的正反向代理与负载均衡等功能实现。 什么是Nginx正/反向代理与负载均衡 Nginx是一款轻量级高性能的HTTP服务器和反向代理服务器。它可以通过正向代理或反向代理的方式将客户端请求转发到后端服务器,并支持负载均衡等高级功能。 正向代理:客户端请求先向代理服务器发出,代理服务器再将请求发送给真实的目标服务器,目标服务器接收…

    Nginx 2023年5月16日
    00
  • linux-安装、启动nginx

    1、下载安装pcre库  pcre是一个正则表达式库,nginx的rewrite模块需要依赖该库。  下载地址:http://www.pcre.org/ wget https://ftp.pcre.org/pub/pcre/pcre-8.40.tar.gz tar -zxvf pcre-8.40.tar.gz cd pcre-8.40 ./configure…

    Nginx 2023年4月11日
    00
  • 修改nginx服务器类型实现简单伪装(隐藏nginx类型与版本等)

    要实现Nginx服务器的简单伪装,需要修改Nginx的配置文件。具体步骤如下: 首先,编辑Nginx的配置文件,一般在/etc/nginx目录下的nginx.conf文件中。使用编辑器打开该文件。 在nginx.conf文件中,找到http段落,并在其中添加以下两条配置: nginx server_tokens off; more_clear_headers…

    Nginx 2023年5月16日
    00
  • Nginx配置文件(nginx.conf)配置详解(总结)

    下面我来详细讲解一下Nginx配置文件(nginx.conf)的配置过程。 1. nginx.conf文件结构 通常情况下,nginx.conf文件的结构如下: // 全局配置 … // http模块配置 http { //http全局配置 … // server模块配置 server { //server全局配置 … // location模块…

    Nginx 2023年5月16日
    00
  • 【转】Nginx基础入门之fastcgi常用配置项说明

    在LNMP环境中,我们都知道nginx如果要解析php脚本语言,就必须通过配置fastcgi模块来提供对php支持,那么在配置fastcgi的时候,关于fastcgi配置项的值应该怎么设置才能让其发挥出更出色的性能呢,下面就讲讲关于nginx模块中fastcgi这部分通用参数介绍 配置语法:  fastcgi_connect_timeout 时间(单位为s)…

    Nginx 2023年4月16日
    00
  • Nginx虚拟主机的配置步骤过程全解

    下面我将为你详细讲解Nginx虚拟主机的配置步骤过程全解。在这个过程中,我会提供两个示例以便更好地理解。 1. 安装Nginx 首先要确保在本机上安装了Nginx,如果没有,可以前往官网下载安装包,然后进行安装。 2. 创建虚拟主机配置文件 在Nginx的配置目录(通常是/etc/nginx)下,创建一个新的配置文件,用于虚拟主机配置。比如,在目录/etc/…

    Nginx 2023年5月16日
    00
  • nginx共享内存的机制详解

    Nginx共享内存的机制详解 什么是共享内存 共享内存是多个进程之间共享同一块内存空间的机制。不同于进程间通信(IPC)中的管道、消息队列、信号量等方式,共享内存可以通过多个进程同时直接读写同一块内存空间的方式实现数据的共享,因此在一些需要高效、频繁的数据处理场景下,使用共享内存是一种性能较好的选择。 Nginx的共享内存 Nginx支持使用共享内存在多个W…

    Nginx 2023年5月16日
    00
  • linux 下 nginx 的最大文件打开设置

    先设置好linux 系统的 limit, 见其他博文 nginx 也有自己的 limit 设置: 1、 nginx.conf 设置  worker_rlimit_nofile         例如:  worker_rlimit_nofile 65535; 同时连接的数量受限于系统上可用的文件描述符的数量,因为每个套接字将打开一个文件描述符。 如果NGINX…

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