Nginx反向代理与负载均衡

ops/2024/9/25 21:21:59/

Nginx 是一个高性能的 HTTP 服务器和反向代理服务器,广泛用于负载均衡、缓存和代理服务。以下是使用 Nginx 搭建网关和负载均衡的步骤,以及如何解决并发压力问题:

1. 安装 Nginx

首先,需要安装 Nginx。在大多数 Linux 发行版上,可以使用包管理工具进行安装。例如,在 Ubuntu 上,可以运行以下命令:

sudo apt update
sudo apt install nginx

在 CentOS 上,可以使用:

sudo yum install nginx

2. 配置 Nginx 作为反向代理

Nginx 可以充当反向代理,将客户端请求转发到后端服务器。以下是一个基本的反向代理配置示例:

编辑 /etc/nginx/nginx.conf 或者创建一个新的配置文件在 /etc/nginx/conf.d/ 中:

http {upstream backend {server backend1.example.com;server backend2.example.com;}server {listen 80;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;}}
}

在这个示例中,upstream 定义了后端服务器的组名 backendserver 指令定义了具体的后端服务器地址。proxy_pass 指令将客户端请求转发到 http://backend,即 upstream 定义的服务器组。

3. 配置负载均衡

Nginx 支持多种负载均衡策略,包括轮询(默认)、最少连接数和 IP 哈希等。可以在 upstream 模块中配置这些策略:

http {upstream backend {server backend1.example.com weight=3; # 设置权重server backend2.example.com;server backend3.example.com backup;  # 备份服务器}server {listen 80;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;}}
}

在这个配置中:

  • weight 指定了服务器的权重,权重大的服务器会处理更多的请求。
  • backup 标记为备份服务器,仅在主服务器不可用时才会处理请求。

4. 配置缓存

Nginx 还可以用于缓存响应,从而减轻后端服务器的负担。以下是一个基本的缓存配置示例:

http {proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m use_temp_path=off;upstream backend {server backend1.example.com;server backend2.example.com;}server {listen 80;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;proxy_cache my_cache;proxy_cache_valid 200 1m;proxy_cache_valid 404 1m;}}
}

在这个配置中,proxy_cache_path 指令定义了缓存的路径和参数。proxy_cacheproxy_cache_valid 指令用于启用缓存和设置缓存有效时间。

5. 配置限流和防护

为了避免系统过载和保护后端服务器,可以配置限流和防护策略:

http {# 限流配置limit_req_zone $binary_remote_addr zone=mylimit:10m rate=5r/s;server {listen 80;location / {limit_req zone=mylimit burst=10 nodelay;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;}}
}

在这个配置中,limit_req_zone 指令定义了限流区域,limit_req 指令配置了请求速率限制,限制每秒的请求数和突发请求数。

6. 重启 Nginx 服务

在修改配置后,需要重启 Nginx 使配置生效:

sudo systemctl restart nginx

总结

通过配置 Nginx 作为反向代理和负载均衡器,可以有效地管理并发流量,提高系统的可靠性和扩展性。Nginx 提供了灵活的负载均衡策略、缓存机制和限流功能,帮助解决并发压力问题,提升服务性能。


http://www.ppmy.cn/ops/97340.html

相关文章

PythonStudio 控件使用常用方式(二十七)TActionList

PythonStudio是一个极强的开发Python的IDE工具,官网地址是:https://glsite.com/ ,在官网可以下载最新版的PythonStudio,同时,在使用PythonStudio时,它也能及时为用户升到最新版本。它使用的是Delphi的控件&…

Unity将摄像机视角保存成Json文件方便读取使用

系列文章目录 unity工具 文章目录 系列文章目录👉前言👉一、设置环境👉二、代码如下👉三、使用方法 👉四、下次外部调用json里面的摄像机位置的时候如下代码方法👉壁纸分享👉总结 &#x1f449…

基于Python的办公自动化系统的设计与实现(论文+源码)_kaic

摘 要 对于现在快速发展的社会来说,传统的办公方式已经远远不能满足于人们的需求,为了适应现代化办公,需要设计一种新的高效的办公自动化系统。本系统采用Python语言,以Django为框架、以Mysql为数据库,来实现登录注册…

C++ 容器详解(已整理成表格)

目录 1. vector 2. deque 3. list 4. set 5. map 6. stack 7. queue 8. priority_queue C常见容器属性表 结语 本文将详细介绍常见的 C 容器,包括它们的定义、使用场景、功能、时间复杂度以及优缺点。最后,附上一个总结表格,方便快速查阅。 1…

SSRF服务器请求伪造

目录 SSRF服务器请求伪造 一、SSRF漏洞概述 二、SSRF常见的函数 1、file_get_contents() 2、fsockopen() 3、exec()发送GET请求 4、exec()发送POST请求 三、SSRF主要危害 1、先准备以下脚本 2、读取文件和信息 3、内网扫描 4、获取指纹信息 四、SSRF漏洞挖掘技巧 …

MongoDB如何实现大于小于查询

MongoDB是一个高性能、开源、无模式的文档型数据库,它使用BSON(Binary JSON)作为存储格式,支持丰富的查询语法,包括大于( g t )、小于( gt)、小于( gt&#x…

Linux切换root用户的几种方法

1. 概述 在Linux操作系统中,root用户是系统的超级用户,拥有的权限。无论是系统配置还是文件操作,都需要root权限才能进行。一般情况下,我们使用普通用户账号进行操作,以提高系统的安全性。但在某些情况下,…

Apeaksoft Video Converter Ultimate for Mac:强大的视频转换与编辑工具

Apeaksoft Video Converter Ultimate for Mac是一款专为Mac用户设计的视频转换与编辑软件,凭借其强大的功能和用户友好的界面,在视频处理领域脱颖而出。该软件不仅支持多种视频格式的转换,还内置了丰富的视频编辑功能,让用户能够轻…