nginx-http反向代理与负载均衡

简介: nginx-http反向代理与负载均衡

前言

反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址,也无须在用户端作任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。——摘自百度百科

简单的HTTP反向代理

nginx默认集成了代理模块,因此可以直接在server域配置proxy_pass实现反向代理。

假设nginx服务器的IP为192.168.0.10,后端服务器

server {
    listen 80;
    location / {
        proxy_pass http://192.168.0.11:8000;
    }
}

负载均衡

负载均衡需要在upstream域配置,示例:

http {
    # ...
    upstream backend {
        server 192.168.0.11:80 weight=80;
        server 192.168.0.12:80;
        server 192.168.0.13:80 backup;
    }
    server {
        location / {
            proxy_pass http://backend;
        }
    }
}

后端服务器指令参数

  • weight: 权重,默认为1。示例: weight=80
  • max_fails: 最大失败数,默认为1。示例: max_fails=3。被代理服务器在fail_timeout规定时间内的最大请求失败数,超过设定次数后,被代理服务器便被认为不可用。
  • fail_timeout: 失败超时,默认为10s。示例:fail_timeout=15s。被代理服务器被置为不可用的最长时间。
  • backup: 备份服务器。将被代理服务器标记为备份服务器,当其他非备份服务器不可用时,会把请求转发给备份服务器。
  • down: 无效服务器。将被代理服务器标记为无效服务器。
  • max_conn: 最大连接数,默认为0,表示没限制。示例:max_conn=100。与被代理服务器建立活动连接的最大数量。

负载均衡策略

默认负载均衡策略为轮询,通过权重配置可实现加权轮询。

  • hash:哈希策略。(暂时还没试过咋用)
  • ip_hash:确保同一个客户端的请求总会被同一个被代理服务器处理。
  • least_conn:最少连接策略。在考虑被代理服务器组权重的前提下,将客户端请求分配给拥有最少活跃连接数的被代理服务器。
  • random:随机负载策略。将客户端请求随机分配给被代理服务器。

负载均衡长连接

默认配置下,HTTP协议的负载均衡与被代理服务器之间的连接都是HTTP/1.0的短连接。如果使用长连接,可以在一个TCP连接中传输多个HTTP请求和响应,减少了建立和关闭TCP连接的消耗和延迟,提高了传输效率。

配置示例:

upstream backend {
    server 192.168.0.11:80;
    server 192.168.0.12:80;
    # 长连接缓存池大小为32
    keepalive 32;
    # 每条长连接最大复用请求数为2000
    keepalive_requests 2000;
}
server {
    location/ {
        proxy_pass http://backend;
        # 启用http/1.1版本与被代理服务器建立连接
        proxy_http_version 1.1;
        # 清空请求头属性字段Connection的内容
        proxy_set_header Connection "";
    }
}

反向代理简单优化

http {
    proxy_cache_path /usr/local/nginx/cache levels=1:2 keys_zone=STATIC:10m inactive=24h max_size=1g;
    tcp_nodelay off;
    server {
        listen 8081;
        location / {
            proxy_pass http://192.168.67.232:80/;
            # 启用响应数据缓冲区
            proxy_buffering on;
            # 设置每个HTTP请求读取上游服务器响应数据缓冲区的大小为64KB
            proxy_buffers 8 8k;
            # 设置每个HTTP请求读取响应数据第一部分缓冲区的大小为8KB
            proxy_buffer_size 8k;
            # 接收上游服务器返回响应数据时,同时用于向客户端发送响应的缓冲区的大小为16KB
            proxy_busy_buffers_size 16k;
            # 不限制每个HTTP请求每秒读取上游服务器响应数据的流量
            proxy_limit_rate 0;
            # 启用客户端HTTP请求读取缓冲区功能
            proxy_request_buffering on;
            # 设置发送给上游服务器的头属性字段Host为客户端请求头字段Host的值
            proxy_set_header Host $host:$server_port;
            # 设置发送给上游服务器的头属性字段X-Real-IP为客户端IP
            proxy_set_header X-Real-IP $remote_addr;
            # 设置用于缓存的共享内存
            proxy_cache STATIC;
            # 设置200响应码的缓存时间为1天
            proxy_cache_valid 200 1d;
            # 出现指定条件时,使用已经过期的缓存响应
            proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;
        }
    }
}
相关文章
|
11天前
|
负载均衡 应用服务中间件 Linux
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
这篇博客文章详细介绍了Nginx的下载、安装、配置以及使用,包括正向代理、反向代理、负载均衡、动静分离等高级功能,并通过具体实例讲解了如何进行配置。
61 4
nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全
|
8天前
|
负载均衡 应用服务中间件 nginx
Nginx的6大负载均衡策略及权重轮询手写配置
【10月更文挑战第9天】 Nginx是一款高性能的HTTP服务器和反向代理服务器,它在处理大量并发请求时表现出色。Nginx的负载均衡功能可以将请求分发到多个服务器,提高网站的吞吐量和可靠性。以下是Nginx支持的6大负载均衡策略:
30 7
|
5天前
|
负载均衡 算法 Java
腾讯面试:说说6大Nginx负载均衡?手写一下权重轮询策略?
尼恩,一位资深架构师,分享了关于负载均衡及其策略的深入解析,特别是基于权重的负载均衡策略。文章不仅介绍了Nginx的五大负载均衡策略,如轮询、加权轮询、IP哈希、最少连接数等,还提供了手写加权轮询算法的Java实现示例。通过这些内容,尼恩帮助读者系统化理解负载均衡技术,提升面试竞争力,实现技术上的“肌肉展示”。此外,他还提供了丰富的技术资料和面试指导,助力求职者在大厂面试中脱颖而出。
腾讯面试:说说6大Nginx负载均衡?手写一下权重轮询策略?
|
8天前
|
缓存 负载均衡 算法
nginx学习:配置文件详解,负载均衡三种算法学习,上接nginx实操篇
Nginx 是一款高性能的 HTTP 和反向代理服务器,也是一个通用的 TCP/UDP 代理服务器,以及一个邮件代理服务器和通用的 HTTP 缓存服务器。
17 0
nginx学习:配置文件详解,负载均衡三种算法学习,上接nginx实操篇
|
15天前
|
开发框架 负载均衡 前端开发
Nginx负载均衡
Nginx负载均衡
|
15天前
|
负载均衡 Java 应用服务中间件
Nginx负载均衡配置
Nginx负载均衡配置
|
18天前
|
应用服务中间件 nginx
nginx反向代理与证书设置
nginx反向代理与证书设置
30 3
|
17天前
|
负载均衡 算法 应用服务中间件
nginx反向代理与负载均衡
nginx反向代理与负载均衡
19 1
|
1月前
|
JavaScript Java 应用服务中间件
|
26天前
|
JavaScript 应用服务中间件 开发工具
vue尚品汇商城项目-day07【53.nginx反向代理配置】
vue尚品汇商城项目-day07【53.nginx反向代理配置】
28 4

热门文章

最新文章