【Nginx学习笔记】:Fastapi服务部署单机Nginx配置说明

服务部署单机Nginx配置说明

服务.conf配置文件:

upstream asr_backend {server 127.0.0.1:8010;
}server {listen 80;server_name your_domain.com;location / {proxy_pass http://localhost:8000;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}

这个 Nginx 配置 主要用于设置反向代理和负载均衡,接收客户端请求并转发给指定的 FastAPI 后端服务。以下是详细解释:


1️⃣ upstream 区域

upstream asr_backend {server 127.0.0.1:8000;
}
  • upstream:用来定义一组服务器的地址,通常用于负载均衡。如果有多个后端服务节点,可以在这里列出并设置负载均衡策略。
    • asr_backend:这是给一组后端服务器(即 FastAPI 服务节点)定义的名字。在后续的 proxy_pass 中使用。
    • server 127.0.0.1:8000:指定后端服务器的 IP 和端口号。在这个配置中,后端服务是运行在 本机 上的 8000 端口。如果有多个后端服务节点,也可以继续增加 server 行(如:server 127.0.0.1:8011;),实现负载均衡。

2️⃣ server 区域

server {listen 80;server_name your_domain.com;location / {proxy_pass http://localhost:8010;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}
  • server:定义一个虚拟服务器,接收来自客户端的请求。

配置项解析

  1. listen 80;
    • 指定 Nginx 监听 80 端口,HTTP 默认端口。
    • 这是公开的入口端口,用户通过 http://your_domain.comhttp://<nginx_ip> 发起请求。
  2. server_name your_domain.com;
    • 配置域名,告诉 Nginx 哪个域名(或 IP 地址)会由此虚拟服务器处理。
    • 如果没有特殊需求,可以使用 localhost 或任何你希望接受请求的域名。如果是实际部署,your_domain.com 需要替换为实际的域名或服务器 IP 地址。
  3. location / { ... }
    • 配置请求的路径。这里使用了 /,表示匹配所有请求路径。
    • 可以通过 location 指定不同路径的转发规则,比如 /api//media/,等等。

proxy_pass 和头部设置

  • proxy_pass http://localhost:8000;
    • 这行表示 Nginx 将所有请求转发到 localhost:8000(即后端 FastAPI 服务)。
    • 如果在 upstream 配置中有多个服务器,proxy_pass 会通过负载均衡将请求分发到这些服务器。
  • proxy_set_header Host $host;
    • 设置传递给后端服务器的 Host 请求头,保留原始的主机名或 IP 地址。这对于某些后端服务的处理非常重要,尤其是当后端需要知道请求的目标主机名时。
  • proxy_set_header X-Real-IP $remote_addr;
    • 设置 X-Real-IP 请求头,将客户端的 IP 地址传递给后端服务。由于请求是通过代理(Nginx)转发的,后端服务默认只能看到 Nginx 的 IP 地址,X-Real-IP 确保后端能获取到真实的客户端 IP。
  • proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    • X-Forwarded-For 是一个标准 HTTP 请求头,表示请求经过了哪些代理服务器。
    • 这里将真实的客户端 IP 地址添加到该头部,便于后端服务了解请求的源头。每次请求经过 Nginx 时,Nginx 会将它自己的 IP 地址附加到这个头部。

总结

  • upstream 用于定义一个后端服务池,如果有多个后端节点,Nginx 会将请求负载均衡地分发到这些节点。
  • server 区域配置了 Nginx 如何监听客户端请求并将其转发到后端服务。
  • proxy_pass 指定了请求的转发目标。
  • proxy_set_header 用来修改或添加请求头,确保后端服务能正确获取客户端的请求信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/84061.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

nfs存储IO等待,导致k8s业务系统卡慢问题处理

注:服务器配置:64C,128G,麒麟v10系统,系统磁盘使用空间(5T)均低于50%,存储磁盘iops约为800左右 发现业务系统卡慢,使用top 命令查看.系统负载较高长期保持在60以上,发现wa值的指标参数长期高于15,返现CPU用于写入磁盘IO等待的时间较高,系统的磁盘I/O压力较大. 配合开发查看日志…

Pytorch 项目实战-1: MNIST 手写数字识别

刚接触深度学习的小伙伴们&#xff0c;是不是经常听说 MNIST 数据集和 PyTorch 框架&#xff1f;今天就带大家从零开始&#xff0c;用 PyTorch 实现 MNIST 手写数字识别&#xff0c;轻松迈出深度学习实践的第一步&#xff01; 一、MNIST 数据集&#xff1a;深度学习界的 “Hel…

大数据量下Redis分片的5种策略

随着业务规模的增长&#xff0c;单一Redis实例面临着内存容量、网络带宽和计算能力的瓶颈。 分片(Sharding)成为扩展Redis的关键策略&#xff0c;它将数据分散到多个Redis节点上&#xff0c;每个节点负责整个数据集的一个子集。 本文将分享5种Redis分片策略。 1. 取模分片(M…

CentOS 7上搭建高可用BIND9集群指南

在 CentOS 7 上搭建一个高可用的 BIND9 集群通常涉及以下几种关键技术和策略的组合&#xff1a;主从复制 (Master-Slave Replication)、负载均衡 (Load Balancing) 以及可能的浮动 IP (Floating IP) 或 Anycast。 我们将主要关注主从复制和负载均衡的实现&#xff0c;这是构成高…

LangChain4j入门AI(六)整合提示词(Prompt)

前言 提示词&#xff08;Prompt&#xff09;是用户输入给AI模型的一段文字或指令&#xff0c;用于引导模型生成特定类型的内容。通过提示词&#xff0c;用户可以告诉AI“做什么”、 “如何做”以及“输出格式”&#xff0c;从而在满足需求的同时最大程度减少无关信息的生成。有…

【MySQL】笔记

&#x1f4da; 博主的专栏 &#x1f427; Linux | &#x1f5a5;️ C | &#x1f4ca; 数据结构 | &#x1f4a1;C 算法 | &#x1f152; C 语言 | &#x1f310; 计算机网络 在ubuntu中&#xff0c;改配置文件&#xff1a; sudo nano /etc/mysql/mysql.conf.d/mysq…

TDengine 运维—容量规划

概述 若计划使用 TDengine 搭建一个时序数据平台&#xff0c;须提前对计算资源、存储资源和网络资源进行详细规划&#xff0c;以确保满足业务场景的需求。通常 TDengine 会运行多个进程&#xff0c;包括 taosd、taosadapter、taoskeeper、taos-explorer 和 taosx。 在这些进程…

OpenCV CUDA模块图像过滤------创建一个盒式滤波器(Box Filter)函数createBoxFilter()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::cuda::createBoxFilter 是 OpenCV CUDA 模块中的一个工厂函数&#xff0c;用于创建一个 盒式滤波器&#xff08;Box Filter&#xff09;&…

谷歌I/O 2025 完全指南:由Gemini开创的AI新时代及其对我们未来的影响

在这个朝着智能化一切狂奔的世界中,谷歌I/O 2025不仅展示了人工智能创新——它传递了一个明确的信息:未来已来临,而且由Gemini驱动。 从突破性的模型进步到沉浸式通信工具和个性化AI助手,谷歌正在重塑人机交互的本质。让我们一起了解最重大的公告及其对开发者、用户和AI生…

5000 字总结CSS 中的过渡、动画和变换详解

CSS 中的过渡、动画和变换详解 一、CSS 过渡(Transitions) 1. 基本概念 CSS 过渡是一种平滑改变 CSS 属性值的机制,允许属性值在一定时间内从一个值逐渐变化到另一个值,从而创建流畅的动画效果。过渡只能用于具有中间值的属性(如颜色、大小、位置等),不能用于 displa…

【图像生成大模型】CogVideoX-5b:开启文本到视频生成的新纪元

CogVideoX-5b&#xff1a;开启文本到视频生成的新纪元 项目背景与目标模型架构与技术亮点项目运行方式与执行步骤环境准备模型加载与推理量化推理 执行报错与问题解决内存不足模型加载失败生成质量不佳 相关论文信息总结 在人工智能领域&#xff0c;文本到视频生成技术一直是研…

辨析Spark 运行方式、运行模式(master)、部署方式(deploy-mode)

为了理清 Spark 运行方式、部署模式&#xff08;master&#xff09;、部署方式&#xff08;deploy-mode&#xff09; 之间的关系&#xff0c;我们先明确几个核心概念&#xff0c;再对比它们的联系与区别。 一、核心概念解析 1. Spark 运行方式&#xff08;代码执行方式&#…

从芯片互连到机器人革命:英伟达双线出击,NVLink开放生态+GR00T模型定义AI计算新时代

5月19日&#xff0c;在台湾举办的Computex 2025上&#xff0c;英伟达推出新技术“NVLink Fusion”&#xff0c;允许非英伟达CPU和GPU&#xff0c;同英伟达产品以及高速GPU互连技术NVLink结合使用&#xff0c;加速AI芯片连接。新技术的推出旨在保持英伟达在人工智能开发和计算领…

04算法学习_209.长度最小的子数组

04算法学习_209.长度最小的子数组题目描述&#xff1a;个人代码&#xff1a;学习思路&#xff1a;第一种写法&#xff1a;题解关键点&#xff1a; 第二种写法&#xff1a;题解关键点&#xff1a; 个人学习时疑惑点解答&#xff1a; 04算法学习_209.长度最小的子数组 力扣题目链…

【已解决】docker search --limit 1 centos Error response from daemon

在docker search的时候你是否遇到过这样的问题&#xff1f; Error response from daemon: Get "https://index.docker.io/v1/search?qcentos&n1": dial tcp 103.56.16.112:443: i/o timeout解决方案 可以尝试一下加一层docker镜像代理&#xff1a; 以mysql:5.…

vue好用插件

自动导入插件 cnpm i -D unplugin-auto-import配置 //在vite.config.js文件加入AutoImport({imports:["vue","vue-router","pinia"],dts:true,}),

算法--js--电话号码的字母组合

题&#xff1a;给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 function letterCombinations (digits){if (!digits.length)…

OSI 网络七层模型中的物理层、数据链路层、网络层

一、OSI 七层模型 物理层、数据链路层、网络层、传输层、会话层、表示层、应用层 1. 物理层&#xff08;Physical Layer&#xff09; 功能&#xff1a;传输原始的比特流&#xff08;0和1&#xff09;&#xff0c;通过物理介质&#xff08;如电缆、光纤、无线电波&#xff09;…

Linux 文件(3)

文章目录 1. Linux下一切皆文件2. 文件缓冲区2.1 缓冲区是什么2.2 缓冲区的刷新策略2.3 为什么要有缓冲区2.4 一个理解缓冲区刷新的例子 3. 标准错误 1. Linux下一切皆文件 在刚开始学习Linux的时候&#xff0c;我们就说Linux下一切皆文件——键盘是文件&#xff0c;显示器是文…

STM32之串口通信蓝牙(BLE)

一、串口通信的原理与应用 通信的方式 处理器与外部设备之间或者处理器与处理器之间通信的方式分两种&#xff1a;串行通信和并行通信。 串行通信 传输原理&#xff1a;数据按位依次顺序传输&#xff08;每一位占据固定的时间长度 MSB or LSB&#xff09; 优点&#xff1a…