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

server/2025/3/10 9:50:51/

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.ppmy.cn/server/173904.html

相关文章

算法每日一练 (9)

💢欢迎来到张胤尘的技术站 💥技术如江河,汇聚众志成。代码似星辰,照亮行征程。开源精神长,传承永不忘。携手共前行,未来更辉煌💥 文章目录 算法每日一练 (9)最小路径和题目描述解题思路解题代码…

c#面试题整理7

1.UDP和TCP的区别 UDP是只要能连上终端就发送,至于终端是否收到,不管。 TCP则是会存在交换,即发送失败或成功,是可知的。 2.进程和线程的区别 双击一个程序的exe文件,程序执行了,这就是一个进程。 这个…

004-用DeepSeek搞定复杂的需求分析和设计

在前面的文章中,我声称AI能够成为驱动企业数字化的大脑。到底行不行呢?为了验证我心中的这一论断,我决定从需求分析开始,验证AI是否能够担任一个靠谱的需求分析师。 1. 一个需求分析案例 我找到了几年前一个小商品市场管理项目的…

新能源汽车能量管理:开启绿色出行新动力

新能源汽车:绿色出行的新选择 在环保意识日益增强和能源问题愈发突出的今天,新能源汽车逐渐成为了人们绿色出行的新宠 。从大街小巷穿梭的纯电动车,到偶尔可见的氢燃料电池车,新能源汽车正以迅猛之势走进我们的生活。 与传统燃油…

开发中常用的正则表达式规则与应用

正则表达式(Regular Expression,简称 regex 或 regexp)是开发中处理文本的强大工具。无论是数据验证、字符串提取,还是文本格式化,正则表达式都能高效完成任务。本文将介绍正则表达式的基本语法、常用匹配规则及其应用…

深度学习五大模型:CNN、Transformer、BERT、RNN、GAN详细解析

卷积神经网络(Convolutional Neural Network, CNN) 原理 :CNN主要由卷积层、池化层和全连接层组成。卷积层通过卷积核在输入数据上进行卷积运算,提取局部特征;池化层则对特征图进行下采样,降低特征维度&…

设计AI芯片架构的入门 研究生入行数字芯片设计、验证的项目 opentitan

前言 这几年芯片设计行业在国内像坐过山车。时而高亢,时而低潮。最近又因为AI的热潮开始high起来。到底芯片行业的规律是如何? 我谈谈自己观点:芯片设计是“劳动密集型”行业。 “EDA和工具高度标准化和代工厂的工艺标准化之后,芯…

k8s概念及k8s集群部署(Centos7)

Centos7部署k8s集群 部署之前,先简单说下k8s是个啥: 一、k8s简介: k8s,全称:kubernetes,它可以看作是一个分布式系统支撑平台。k8s的作用: 1、故障自愈: k8s这个玩意可以监控容器…