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

Nginx:proxy_pass指令

proxy_pass 指令在 Nginx 中是实现反向代理和负载均衡的重要指令。

一. 反向代理

在反向代理的场景下,proxy_pass 指令用于将接收到的请求转发给另一个后端服务器。后端服务器地址可以是 IP 地址加端口、域名加端口、或者一个完整的 URL。

注意事项

proxy_pass 后面的 URL 末尾是否存在 / 的处理逻辑不同。如果在 proxy_pass 后面的 URL 加 /,表示绝对根路径;如果没有 /,表示相对路径,可能会把匹配的路径部分也给代理走。

示例如下:

情况一
location /api/ {proxy_pass http://localhost:8080/;
}location /V1/ {proxy_pass http://localhost:8080/api/;
}

对于访问 http://example.com/api/test,Nginx 会将其转发到 http://localhost:8080/test。

对于访问 http://example.com/V1/data,Nginx 会将其转发到 http://localhost:8080/api/data。

注意:如果 proxy_pass 指令包含了一个 URI 路径(/api/),Nginx 会将这个路径与原始请求 URI 中匹配 location 块后剩余的部分(data)进行拼接。在拼接时,,Nginx 会确保路径的拼接是正确的,并且没有不必要的双斜杠(//)。

情况二
location /api/ {proxy_pass http://localhost:8080;
}

对于访问 http://example.com/api/test,Nginx 会将其转发到 http://localhost:8080/api/test。

情况三
location /V1 {proxy_pass http://localhost:8080/api;
}

对于访问 http://example.com/V1/data,Nginx 会将其转发到 http://localhost:8080/api/data。

注意:确保 location 块和 proxy_pass 指令的路径部分要么都加斜杠(/),要么都不加斜杠。

情况四
location ~ /api/ {proxy_pass http://localhost:8080;        # 不可以写成 8080/...
}

对于访问 http://example.com/api/test,Nginx 会将其转发到 http://localhost:8080/test。

注意:当 location 使用正则表达式来匹配请求的 URI 时,proxy_pass 应该只包含主机名和端口号,而不应该包含任何 URI 路径。

二. 负载均衡

在负载均衡的场景下,proxy_pass 指令与 upstream 模块一起使用,用于将请求分发到多个后端服务器中的一个。

upstream backend-servers {  server srv1.example.com;  server srv2.example.com;  server srv3.example.com;  
}  server {listen 80;server_name   www.example.com;location /api/ {proxy_pass  http://backend-servers;}
}

负载均衡默认使用的是轮询算法,按照时间先后来分发请求,第一个 request 走 srv1.example.com,第二个 request 走 srv2.example.com … 以此类推。

http://www.lryc.cn/news/465546.html

相关文章:

  • 【AI学习】Mamba学习(十):HiPPO总结
  • AI编程新纪元:Cursor与V0引领的技术变革
  • python——类
  • 走廊泼水节——求维持最小生成树的完全图的最小边权和
  • LC:动态规划-买卖股票
  • FLINK SQL 任务参数
  • HCIP——以太网交换安全(四)DHCP Snooping
  • k8s worker 节点关机 sts 管理的 pod 无法迁移
  • 排序04 视频播放建模
  • 【常见大模型API调用】第三篇:清华智谱--智谱AI
  • LayerSkip – Meta推出加速大型语言模型推理过程的技术
  • 环境变量与本地变量(Linux)
  • 【完-网络安全】Windows防火墙及出入站规则
  • Vue学习记录之十七 css中样式穿透及新特征介绍
  • Nature 正刊丨海洋涡旋中常见的地下热浪和寒潮
  • 代码随想录算法训练营第六十二天| prim算法,kruskal算法
  • Newstar_week1_week2_wp
  • 今天我们研究一段代码(异或位运算)
  • pycharm中使用ctrl+鼠标滚轮改变字体大小
  • 【算法-动态规划】打家劫舍专题
  • 关于技术管理者的一些思考
  • Alpha-CLIP: A CLIP Model Focusing on Wherever You Want CVPR 2024
  • Golang | Leetcode Golang题解之第495题提莫攻击
  • 04 go语言(golang) - 变量和赋值过程
  • 语言/图像/视频模型一网打尽!BigModel大模型开放平台助力开发者轻松打造AI新应用!
  • Go语言Linux环境搭建以编写第一个Go程序
  • 使用 Go 构建一个最小的 API 应用
  • MySQL 日常维护指南:常见任务、频率及问题解决
  • oracle ORA-24920:列大小对于客户机过大
  • 使用 Docker compose 部署 Nacos(达梦数据库)