当前位置: 首页 > article >正文

Nginx多服务器转发接口数据,实现单接口多服务器处理数据,达到数据共享

1. 安装 Nginx

不同的操作系统安装 Nginx 的方式有所不同:

Ubuntu/Debian

sudo apt update

sudo apt install nginx

 CentOS/RHEL

sudo yum install nginx

2. 配置 Nginx(不习惯vim的可以用xftp操作文件)

编辑 Nginx 的配置文件,一般位于 /etc/nginx/sites-available/default 或者 /etc/nginx/nginx.conf,在其中添加如下配置:

# 定义两个上游服务器,即要转发到的另外两台服务器

upstream backend_servers {

server server1.example.com;

server server2.example.com;

}

server {

listen 80; # 监听的端口,可以根据需要修改

location /api/devStatus/88 {

# 允许跨域请求,可根据实际情况调整

add_header 'Access-Control-Allow-Origin' '*';

add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';

add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';

# 如果是 OPTIONS 请求,直接返回 204 状态码

if ($request_method = 'OPTIONS') {

return 204;

}

# 转发请求到上游服务器

proxy_pass http://backend_servers;

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:定义了一个名为 backend_servers 的上游服务器组,包含要转发到的另外两台服务器。你需要将 server1.example.com 和 server2.example.com 替换为实际的服务器地址。
  • server:定义了一个监听 80 端口的虚拟主机。
  • location:匹配 /api/devStatus/88 的请求,设置了跨域请求的响应头,处理 OPTIONS 请求,并将请求转发到上游服务器组。

3. 检查配置并重启 Nginx

在修改完配置文件后,需要检查配置文件是否存在语法错误,然后重启 Nginx 使配置生效:

 sudo nginx -t # 检查配置文件语法

 sudo systemctl restart nginx # 重启 Nginx

4. 测试

现在,当客户端发送对 http://your-nginx-server/api/devStatus/88 的请求时,Nginx 会将请求转发到 backend_servers 中的两台服务器。你可以使用工具(如 Postman)来测试请求转发是否正常工作。

注意事项

  • 服务器地址:要确保 server1.example.com 和 server2.example.com 是正确的服务器地址,并且 Nginx 服务器能够访问这些地址。
  • 端口和协议:如果服务器使用的不是默认的 80 端口或 HTTP 协议,需要在 upstream 配置中指定端口和协议,例如 server server1.example.com:8080; 或 server https://server1.example.com;
  • 安全性:在生产环境中,建议对跨域请求的配置进行更严格的控制,避免使用 * 作为 Access-Control-Allow-Origin 的值。

http://www.kler.cn/a/576158.html

相关文章:

  • 【微信小程序】uniapp开发微信小程序
  • 网络安全区划分
  • 使用PHP实现微服务架构:挑战与解决方案
  • SQL-labs13-16闯关记录
  • Docker Desktop常见问题记录
  • 微信小程序+SpringBoot的单词学习小程序平台(程序+论文+讲解+安装+修改+售后)
  • 【计算机网络】计算机网络的性能指标——时延、时延带宽积、往返时延、信道利用率
  • Java 面试篇-SSM 框架专题(什么是 AOP?Spring 中事务时如何实现的?事务失效的场景?Spring 中循环引用怎么解决?Springboot 的自动配置原理?Spring 常见注解?)
  • BFS(八)515. 在每个树行中找最大值 中等
  • OpenCV计算摄影学(14)实现对比度保留去色(Contrast Preserving Decolorization)的函数decolor()
  • SpringBoot知识点及其源码解析(1)
  • 发行基础:热销商品榜单
  • 图形界面控件编程(iOS)
  • 机器学习——回归树
  • linux-mysql
  • C语言【进阶篇】之结构体 —— 从基础声明到复杂应用的进阶之路
  • 论文阅读笔记:TopoFR: A Closer Look at Topology Alignment on Face Recognition
  • CVE-2025-0392:JeeWMS graphReportController.do接口SQL注入漏洞复现
  • 图像生成-ICCV2019-SinGAN: Learning a Generative Model from a Single Natural Image
  • 小米安全攻防工程师面试题解析