Nginx配置反向代理

代理通常用于在多个服务器之间分配负载,无缝显示来自不同网站的内容,或通过 HTTP 以外的协议将处理请求传递给应用程序服务器。

将请求传递到代理服务器

NGINX 代理请求时,它会将请求发送到指定的代理服务器,获取响应,并将其发送回客户端。可以使用指定的协议将请求代理到HTTP服务器(另一个NGINX服务器或任何其他服务器)或非HTTP服务器(可以运行使用特定框架开发的应用程序,例如PHPPython)。支持的协议包括 FastCGIuwsgiSCGImemcached

若要将请求传递给 HTTP 代理服务器,请在位置内指定 proxy_pass 指令。例如:

location /some/path/ {proxy_pass http://www.example.com/link/;
}

此示例配置将导致将在此location处理的所有请求传递到指定地址的代理服务器。此地址可以指定为域名或 IP 地址。该地址还可能包括一个端口.

location ~ \.php {proxy_pass http://127.0.0.1:8000;
}

请注意,在上面的第一个示例中,代理服务器的地址后跟一个 URI。 /link/ 如果 URI 与地址一起指定,它将替换请求 URI 中与 location 参数匹配的部分。例如,此处带有 /some/path/page.html URI 的请求将被代理到 http://www.example.com/link/page.html 。如果指定地址时没有 URI,或者无法确定要替换的 URI 部分,则会传递完整的请求 URI(可能已修改)。

要将请求传递到非 HTTP 代理服务器,应使用适当的 **_pass 指令:

  • fastcgi_pass将请求传递给 FastCGI 服务器
  • uwsgi_pass将请求传递给 uWSGI 服务器
  • scgi_pass将请求传递给 SCGI 服务器
  • memcached_pass将请求传递给 memcached 服务器

请注意,在这些情况下,指定地址的规则可能会有所不同。您可能还需要将其他参数传递给服务器(有关详细信息,请参阅参考文档)。

proxy_pass 指令还可以指向一组命名的服务器。在这种情况下,请求将按照指定的方法分布在组中的服务器之间。

案例1:使用http://localhost:8085IP 加端口代理访问百度配置如下:
在这里插入图片描述
访问效果如下:
在这里插入图片描述
案例2:使用http://localhost:8085/imageIP 加端口代理访问http://127.0.0.1:8084/image下的文件目录列表配置如下:
在这里插入图片描述
访问效果如下:
在这里插入图片描述
当访问http://localhost:8085/image时,nginx 会自动代理访问http://127.0.1.1:8084 并且会将/image URI 拼接在路径后面,完整路径就是http://127.0.0.1:8084\image.


传递请求标头

默认情况下,NGINX 重新定义了代理请求中的两个标头字段,即 HostConnection,并删除了值为空字符串的标头字段。Host设置为变量 $proxy_host ,Connection设置为 close

若要更改这些设置以及修改其他标头字段,请使用 proxy_set_header 指令。可以在某个位置或更高位置指定此指令。它也可以在特定的服务器上下文或 http 块中指定。例如:

location /some/path/ {proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_pass http://localhost:8000;
}

在此配置中,Host字段设置为$host变量
若要防止将标头字段传递到代理服务器,请将其设置为空字符串,如下所示:

location /some/path/ {proxy_set_header Accept-Encoding "";proxy_pass http://localhost:8000;
}

配置缓冲区

默认情况下,NGINX 会缓冲来自代理服务器的响应。响应存储在内部缓冲区中,在收到整个响应之前不会发送到客户端。缓冲有助于优化慢速客户端的性能,如果响应从 NGINX 同步传递到客户端,这可能会浪费代理服务器时间。但是,启用缓冲后,NGINX 允许代理服务器快速处理响应,而 NGINX 将响应存储与客户端下载响应所需的时间一样长。

负责启用和禁用缓冲的指令是 proxy_buffering。默认情况下,它设置为并 on 启用缓冲。

proxy_buffers 指令控制为请求分配的缓冲区的大小和数量。来自代理服务器的响应的第一部分存储在单独的缓冲区中,其大小由 proxy_buffer_size 指令设置。此部分通常包含相对较小的响应标头,并且可以小于响应其余部分的缓冲区。

在以下示例中,将增加默认缓冲区数,并且响应第一部分的缓冲区大小小于默认值。

location /some/path/ {proxy_buffers 16 4k;proxy_buffer_size 2k;proxy_pass http://localhost:8000;
}

如果禁用缓冲,则在客户端从代理服务器接收响应时,响应将同步发送到客户端。对于需要尽快开始接收响应的快速交互式客户端,此行为可能是可取的。

若要在特定位置禁用缓冲,请将 proxy_buffering 指令放在带有参数 off 的位置,如下所示:

location /some/path/ {proxy_buffering off;proxy_pass http://localhost:8000;
}

在这种情况下,NGINX 仅使用 proxy_buffer_size 配置的缓冲区来存储响应的当前部分。


选择传入 IP 地址

如果代理服务器具有多个网络接口,则有时可能需要选择特定的源 IP 地址来连接到代理服务器或上游。如果将 NGINX 后面的代理服务器配置为接受来自特定 IP 网络或 IP 地址范围的连接,这可能很有用。

指定所需网络接口的 proxy_bind 指令和 IP 地址:

location /app1/ {proxy_bind 127.0.0.1;proxy_pass http://example.com/app1/;
}location /app2/ {proxy_bind 127.0.0.2;proxy_pass http://example.com/app2/;
}

也可以使用变量指定 IP 地址。例如,该 $server_addr 变量传递接受请求的网络接口的 IP 地址:

location /app3/ {proxy_bind $server_addr;proxy_pass http://example.com/app3/;
}

案例1:限制只能192.168.0.111 IP可进行访问到http://localhost:9090/时,可以使用proxy_bind指令进行限制。
在这里插入图片描述
浏览器访问效果如下:
在这里插入图片描述

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

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

相关文章

大语言模型发展史

前言 2023年可谓是生成式AI元年,大语言模型从崭露头角到锋芒毕露,已然成为人工智能领域的关键推动力。这一创新性的技术不仅在自然语言处理领域崭露头角,更深刻地改变了我们对人机交互、智能助手和信息处理的认知。那么大语言模型的发展历程…

HarmonyOS云开发基础认证【题库答案】

HarmonyOS应用开发者基础认证【题库答案】 HarmonyOS应用开发者高级认证【题库答案】 一、判断题 应用架构的演进依次经历了微服务架构、单体架构、Serverless架构等阶段。(错)鸿蒙应用可以使用Arkts开发(对)认证服务在绑定微信账…

如何使用ArcGIS Pro自动矢量化建筑

相信你在使用ArcGIS Pro的时候已经发现了一个问题,那就是ArcGIS Pro没有ArcScan,在ArcGIS Pro中,Esri确实已经移除了ArcScan,没有了ArcScan我们如何自动矢量化地图,从地图中提取建筑等要素呢,这里为大家介绍…

基于 eBPF 构建下一代智能可观测系统

作者:梵登、千陆 本文基于 KubeCon China 2023 分享整理 我们今天分享的主题是基于 eBPF 构建下一代智能可观测系统。 在开始之前呢,我先介绍一下我们自己。我是刘恺,花名是千陆,目前是阿里云 ARMS K8s 监控子产品的负责人。这…

UWB高精度人员定位系统源码,全方位护航安全生产

定位管理系统使用UWB定位技术,通过在厂区安装定位基站,为人员或设备佩戴定位标签的形式,实现人员精准实时定位。可以实现人员、车辆物资实时定位、工作考勤、电子围栏、历史轨迹回放、巡检巡查、物资盘点、路径规划、三维显示等,以…

NLP 自然语言处理实战

自然语言处理 ( Natural Language Processing, NLP) 是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法,用于分析理解机器与人之间的交互,常用的领域有:实体识别、文本纠错…

Conda:Python环境管理的瑞士军刀

在数据科学和机器学习的世界中,管理各种库和依赖关系的重要性不容忽视。Conda 就是为此而生的强大工具。本文将深入探讨 Conda 的简介、功能以及使用示例,帮助你更好地理解和使用这个工具。 Conda 简介 Conda 是一个开源的包管理系统和环境管理系统&am…

惟客数据昆仑-开发云成功开源了!让研发更简单高效

​近期,WakeData惟客数据产品——昆仑-开发云成功开源。 今年4月,惟客数据完成了新一轮产品能力升级,与战略伙伴联合研发具有私有化部署能力的行业大模型 WakeMind 。 昆仑-开发云在可视化领域建模的基础上也引入了 WakeMind 的能力&#x…

如何在Docker环境下安装火狐浏览器并结合内网穿透工具实现公网访问

文章目录 1. 部署Firefox2. 本地访问Firefox3. Linux安装Cpolar4. 配置Firefox公网地址5. 远程访问Firefox6. 固定Firefox公网地址7. 固定地址访问Firefox Firefox是一款免费开源的网页浏览器,由Mozilla基金会开发和维护。它是第一个成功挑战微软Internet Explorer浏…

【力扣题解】P94-二叉树的中序遍历-Java题解

👨‍💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【力扣题解】 文章目录 【力扣题解】P94-二叉树的中序遍历-Java题解🌏题目描述💡题解&#x1f30f…

鸿蒙原生应用/元服务开发-Stage模型能力接口(十)下

ohos.app.form.FormExtensionAbility (FormExtensionAbility) 系统能力:SystemCapability.Ability.Form 示例 import FormExtensionAbility from ohos.app.form.FormExtensionAbility; import formBindingData from ohos.app.form.formBindingData; import formP…

Miniconda 3 | 出发,探索Python

介绍 Miniconda 是 Anaconda 的精简版本,是一个轻量级的 Python 包管理工具和环境管理工具。 优势和功能主要包括: 轻量级和快速安装: Miniconda 相比 Anaconda 更小巧,只包含最基本的工具和包管理功能。安装速度更快&#xff0c…

端口+目录扫描

目录 前言: 基础知识: 状态码: 2XX: 3XX: 4XX: 5XX: 消息头: 请求头: 响应头: 目录扫描: 接口扫描: 主机存活扫描: I…

网页设计期末 建筑博物馆首页 HTML+CSS+js 完整代码(轮播图+瀑布流)

文章目录 前言:完整代码在总结处跳转!!! 描述:结果展示:部分代码演示:(完整代码在总结处跳转)总结:(完整代码在此处跳转) 前言&#x…

C++面试宝典第11题:两数之和

题目 给定一个整数数组和一个目标值,请在该数组中找出和为目标值的那两个整数,并返回他们的数组下标,要求时间复杂度为O(n)。可以假设每种输入只会对应一个答案,注意:不能重复利用这个数组中同样的元素。 解析 这道题主要考察应聘者对算法时间复杂度和空间复杂度的理解,时…

【JVM篇】Java是如何实现平台无关的?

Java是如何实现平台无关的? ✔️什么是平台无关性✔️平台无关性的实现✔️Java虚拟机✔️字节码✔️Java语言规范 ✔️扩展知识仓✔️平台无关性的好处✔️ 有哪些语言实现了平台无关?✔️Java中基本数据类型的大小都是确定的吗? ✔️什么是平台无关性 平台无关性就是一种语…

Net6 Core webApi发布到IIS

Net6 Core Api发布到IIS不同于webapi,依赖框架不同,配置也移至项目内Program.cs 一、发布到指定文件夹和IIS,不过注意IIS应用程序池选择的是 “无托管代码“ 在IIS管理器中点击浏览,访问接口路径报500.19,原因是所依赖…

机器学习之K-means聚类

概念 K-means是一种常用的机器学习算法,用于聚类分析。聚类是一种无监督学习方法,它试图将数据集中的样本划分为具有相似特征的组(簇)。K-means算法的目标是将数据集划分为K个簇,其中每个样本属于与其最近的簇中心。 以下是K-means算法的基本步骤: 选择簇的数量(K值)…

HTTP协议编程实战(一)实战一

http使用在应用层,http是单次连接,一次只能发送一个请求。http是一个无状态协议,他不会保存客户端的状态信息,从而提高运行效率,保持比较快的响应速度。http是一种面向对象的协议,允许传送任意数据类型的对…

2024年医院设备维修培训安排

在你还考虑该不该干的时候别人已经走好远了 小时候觉得忘带作业是天大的事,高中的时候,觉得考不上大学是天大的事,恋爱的时候,觉得跟喜欢的人分开是天大的事,到现在回头看看,那些难以跨过的山,…