Nginx R31 doc-10-NGINX Reverse Proxy 反向代理

配置 NGINX 作为反向代理

配置 NGINX 作为反向代理用于 HTTP 和其他协议,支持修改请求头和对响应进行细粒度的缓冲。

本文介绍了代理服务器的基本配置。您将学习如何将请求从 NGINX 转发到不同协议的代理服务器上,修改发送到代理服务器的客户端请求头,并配置来自代理服务器的响应的缓冲。

介绍

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

将请求传递给代理服务器

当 NGINX 代理请求时,它将请求发送到指定的代理服务器,获取响应,并将其发送回客户端。

可以通过指定的协议将请求代理到 HTTP 服务器(另一个 NGINX 服务器或任何其他服务器)或非 HTTP 服务器(可以运行使用特定框架开发的应用程序,如 PHP 或 Python)。支持的协议包括 FastCGI、uwsgi、SCGI 和 memcached。

要将请求传递到 HTTP 代理服务器,需要在 location 内部指定 proxy_pass 指令。例如:

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

此示例配置导致将此位置处理的所有请求传递到指定地址的代理服务器。

此地址可以指定为域名或 IP 地址。地址还可以包括端口:

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

请注意,在上面的第一个示例中,代理服务器的地址后面跟着一个 URI,/link/。如果 URI 与地址一起指定,则它替换了与位置参数匹配的请求 URI 部分。

例如,在这里,具有 /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 指令也可以指向一组命名的服务器。在这种情况下,请求将根据指定的方法分布在组中的服务器之间。

传递请求头

默认情况下,NGINX 在代理请求中重新定义两个头字段:“Host” 和 “Connection”,并且消除值为空字符串的头字段。 “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/;
}

nginx 系列

Nginx-01-聊一聊 nginx

Nginx-01-Nginx 是什么

Nginx-02-为什么使用 Nginx

Nginx-02-Nginx Ubuntu 安装 + windows10 + WSL ubuntu 安装 nginx 实战笔记

Nginx-02-基本使用

Nginx-03-Nginx 项目架构

Nginx-04-Docker Nginx

Nginx-05-nginx 反向代理是什么?windows 下如何配置使用 nginx

Nginx-06-nginx 汇总入门介绍

Nginx R31 doc 官方文档-01-nginx 如何安装

Nginx R31 doc-02-nginx 基本功能

Nginx R31 doc-03-HTTP Load Balancing HTTP 负载均衡

Nginx R31 doc-04-HTTP Health Checks

Nginx R31 doc-05-Dynamic Configuration of Upstreams with the NGINX Plus API 使用 NGINX Plus API 动态配置上游服务器

Nginx R31 doc-06-Accepting the PROXY Protocol

Nginx R31 doc-07-内容缓存

Nginx R31 doc-08-Configuring NGINX and NGINX Plus as a Web Server 配置 NGINX 和 NGINX Plus 作为 Web 服务器

Nginx R31 doc-09-Serving Static Content 静态内容

Nginx R31 doc-10-NGINX Reverse Proxy 反向代理

Nginx R31 doc-11-Compression and Decompression 压缩与解压缩

Nginx R31 doc-12-NGINX SSL Termination 安全加密

Nginx R31 doc-13-Limiting Access to Proxied HTTP Resources 访问限流

Nginx R31 doc-14-Dynamic Denylisting of IP Addresses 动态拒绝IP地址

Nginx R31 doc-15-Live Activity Monitoring 实时活动监控

Nginx R31 doc-16-logging 配置日志

Nginx R31 doc-17-debugging 调试

Nginx R31 doc-18-High Availability Support for NGINX Plus in On-Premises Deployments

Nginx 实战-01-nginx ubuntu 安装笔记

Nginx 实战-01-nginx windows 安装笔记

Nginx 实战-02-nginx proxy_pass 服务代理访问 使用笔记 ubuntu nodejs

Nginx 实战-03-nginx 负载均衡

Nginx 实战-04-nginx 不同的地址访问不同的服务

Nginx 实战-05-nginx 反向代理实现域名到指定的 ip

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

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

相关文章

全球首个多语种手语视频生成模型诞生:SignLLM

近日,一项名为 SignLLM 的新型 AI 技术取得了突破性进展,或将彻底改变听障人士的沟通方式。作为全球首个多语种手语生成模型,SignLLM 能够将输入的文本或语音指令,实时转化为对应的手语手势视频,为打破语言障碍、促进信…

TiDB-从0到1-分布式事务

TiDB从0到1系列 TiDB-从0到1-体系结构TiDB-从0到1-分布式存储TiDB-从0到1-分布式事务TiDB-从0到1-MVCC 一、事务定义 这属于老生常谈了,无论不管是传统事务还是分布式事务都离不开ACID A:原子性C:一致性I:隔离性D:…

怎么查看 iOS ipa包 mobileprovision 改动

查看 iOS .ipa 包中的 .mobileprovision 文件(即配置文件或描述文件)的改动,可以通过以下步骤进行: 重命名 .ipa 文件:将 .ipa 文件扩展名改为 .zip。例如,如果文件名为 MyApp.ipa,则重命名为 M…

A 股涨停板实时数据 API 数据接口

A 股涨停板实时数据 API 数据接口 股票 / A股 / 涨停数据,所有A股涨停板实时数据,A 股涨停数据 / 实时数据。 1. 产品功能 支持所有 A 股涨停板实时数据查询;包含 A 股实时交易多项指标数据;毫秒级查询性能;全接口支…

Linux系统编程(五)多线程创建与退出

目录 一、基本知识点二、线程的编译三、 线程相关函数1. 线程的创建(1)整型的传入与接收(2)浮点数的传入与接收(3)字符串的传入与接收(4)结构体的传入与接收 2. 线程的退出3. 线程的…

机器学习笔记——线性回归、梯度下降

线性回归 什么是线性回归就不说了,直接说线性回归的目标就是首先需要一个损失函数,使得损失函数最小化来训练得出的模型,最常用的损失函数是均方误差 例子 如果要预测房屋平均售价之前需要对数据标准化,用到StandarScalar这个类&…

FastGPT私有化部署+OneAPI配置大模型

介绍 FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排,从而实现复杂的问答场景! 官网地址 https://doc.fastai.site/docs/intro/ 部署 FastGPT提供…

frp转发服务

将内网服务转发到外网,我准备了一台阿里云ubuntu22.04服务器,两台内网ubuntu22.04服务器 下载frpc和frps以及配置文件 链接: https://pan.baidu.com/s/1auvcWWnyfpYPYatYhHFYag?pwdqkgh 提取码: qkgh 复制这段内容后打开百度网盘手机App,操作…

如何实现数据的正确拆分?

我们知道在传统的单块架构中,一个系统中只存在一个独立的服务和数据库实例。 上图中的系统架构实现起来比较简单,但是扩展性和伸缩性都比较差。因此,越来越多的系统开始采用了微服务架构。在微服务架构中,一个系统被拆分成多个服务…

6种经典的网页布局设计,你最喜欢哪个?

信息时代,我们每天都会浏览很多网页,但你有没有想过,让你停留在一个新网页的关键因素有哪些?毫无疑问,网页布局一定是关键因素之一。一个优秀的网页布局不仅可以让网站看起来更美观、更专业,还能够抓住用户…

R 语言入门学习笔记:软件安装踩坑记录——删除所有包以及彻底解决库包被安装到 C 盘用户目录下的问题,以及一些其他需要注意的点

文章目录 R 语言入门学习笔记:软件安装踩坑记录——删除所有包以及彻底解决库包被安装到 C 盘用户目录下的问题,以及一些其他需要注意的点软件版本及环境遇到的问题描述问题的分析和探究最终的解决方案折中方案根治方案 其他在安装过程中需要注意的问题 …

高效记录收支明细,预设类别账户,智能统计财务脉络,轻松掌握个人财务!

收支明细管理是每位个人或企业都必须面对的财务任务,财务管理已经成为我们生活中不可或缺的一部分。如何高效记录收支明细,预设类别账户,智能统计财务脉络,轻松掌握个人财务?晨曦记账本为您提供了完美的解决方案&#…

Java 面向对象编程(OOP)

面向对象编程(Object-Oriented Programming,OOP)是Java编程语言的核心思想之一。通过OOP,Java提供了一种结构化的编程方式,使代码更易于维护和扩展。 一、类和对象 1. 类的定义 类是对象的蓝图或模板,定…

File name ‘xxxx‘ differs from already included file name ‘xxxx‘ only in casing.

一、报错信息 VSCode报错如下: File name ‘d:/object/oral-data-management/src/components/VisitLogPopup/Info.vue’ differs from already included file name ‘d:/object/oral-data-management/src/components/VisitLogPopup/INfo.vue’ only in casing. The…

【PostgreSQL17新特性之-事务级别超时参数transaction_timeout】

PostgreSQL数据库里有多个和会话相关的参数,PostgreSQL17-beta1版本新增了一个transaction_timeout参数,来限制事务的持续时间。 当前的一些和会话相关的超时参数如下 -----------------------------------------------------------------------------…

备忘录模式具体的例子(含代码)

学习目标: 了解备忘录模式 学习内容: 备忘录模式在现实生活中的一个具体例子是文字处理软件(如Microsoft Word)中的“撤销”功能。这个功能允许用户在编辑文档时撤销之前的操作,并恢复到之前的状态。让我们更详细地看…

第一讲:单片机STC89C52+RA8889驱动控制彩屏(源码公开)

51单片机驱动控制彩屏系列讲座 第一讲:单片机STC89C52RA8889驱动控制彩屏(源码公开) 单片机通过SPI与RA8889进行通信,由于单片机是5V,RA8889是3.3V,故需要进行电平转换,有现成的模组TXS0108E等可以采用。…

linux开放某一个端口具体步骤

场景:当服务器防火墙不能直接关闭,但是客户端必须要访问服务器某一个端口时。 处理:对服务器端进行处理,只将该端口开放出来让客户端访问 本地使用vm安装了一个centos服务器,ip地址是 192.168.200.130。在这里充当服…

Kafka原生API使用Java代码-生产者-异步发送消息回调

文章目录 1、异步发送消息&回调1.1、pom.xml1.2、KafkaProducer1.java 1、异步发送消息&回调 回调就是接收kafka的响应 1.1、pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0&q…

Spring的依赖注入DI

直接使用构造器注入: 需要有对应匹配的构造器 不然出现异常No matching constructor Spring构造器注入有三种不同方式 name :按照参数名称 <bean id"stu" class"com.xja.bean.Student"> <constructor-arg name"name" value"rk&…