问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Nginx 最全操作——nginx反向代理(5)

发布网友 发布时间:2022-08-16 13:47

我来回答

1个回答

热心网友 时间:2023-10-17 23:42

将 NGINX 配置为 HTTP 和其他协议的反向代理,支持修改请求标头和微调的响应缓冲。

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

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

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

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

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

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

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

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

proxy_pass指令也可以指向一组命名的服务器。在这种情况下,请求根据指定的方法在组中的服务器之间分发。

默认情况下,NGINX 重新定义代理请求中的两个 header 字段,“Host”和“Connection”,并消除值为空字符串的 header 字段。“Host”设置为 $proxy_host 变量,“Connection”设置为 close 。

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

在此配置中,“主机”字段设置为$host变量。

要防止标头字段被传递到代理服务器,请将其设置为空字符串,如下所示:

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

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

该proxy_buffers指令控制规模和分配的请求缓冲区的数目。来自代理服务器的响应的第一部分存储在单独的缓冲区中,其大小由proxy_buffer_size指令设置。这部分通常包含一个相对较小的响应头,并且可以做得比其余响应的缓冲区小。

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

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

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

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

反向代理的一个常见用途是提供负载平衡。阅读免费的选择软件负载均衡器的五个理由电子书,了解如何通过快速部署来提高功能、性能和专注于您的应用程序。

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

指定proxy_bind指令和必要网络接口的 IP 地址:

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

简单来说,把百度首页代理到/test路径,同时把java代理到/testapi,配置如下:

参考链接:https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/

欢迎大家提出不一样的观点,我们一起讨论,

我是辣个男人,一个运维人。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
抖音火山版怎么查看钱包 查看方法介绍 职能手机v3职能手机的优点和缺点 关于Cascode运放的偏置电路 vb WindowsMediaPlayer1控件怎么同时播放两个视频文件 太阳马戏团特点 【加拿大必知百科系列】加拿大文化璀璨之星—太阳马戏团 太阳马戏团简介 垃圾短信如何拦截设置 垃圾短信拦截设置的方法 vivo xplay3s用奇兔刷机刷机后打电话显示SIM卡错误是怎么回事?卡重新插... 为什么我的vivo xplay3s联通卡插上去显示无SIM卡呢? 赛钛客 1型的键盘好不好啊 谁用过?300块贵吗 龙湖滟澜海岸澜庭交通方便吗?应该怎么过去? 龙湖滟澜海岸的介绍 中国建设银行(深圳观澜支行)到黎光村怎么走 翻身到中国建设银行(深圳观澜支行)怎么走 章阁市场到中国银行观澜支行怎么走 观澜富士康南门到中国银行观澜支行怎么走 观澜富士康北门到中国银行观澜支行怎么走 观澜富士康到中国银行观澜支行怎么走 观澜街道到中国银行观澜支行怎么走 会计学基础选择题 结帐按时间划分,一般可分为( ) A、日结 B、季结 C、月结 D、年结 E 多选按照不同的会计期间,结账可分为() 苔菜粉条炖肉怎么做好吃,苔菜粉条炖肉的家 很贵青色提子叫什么名字 梦到死人扛了一捆柴是啥意思 梦见自己死去的爷爷奶奶在老家捆材 手机剪映录音功能和识别字幕技巧,视频配音更简单 三九是指什么 有谁知道美团投诉是多少? 怎么找不到熊猫看书1.6版啊 格力35Q畅内机管温多少K? 天水至淄博坐火车经过那些火车站路图? 今天z274列车几点到兰州 z274次列车从西安到郑州中间经过哪些站 西宁一山东理工大学的火车票查询? 亲子共读一本书 《爱的教育》 共读过程记录是什么,爱的教育 亲子共读的一本好书是啥 量词:一( )队员 海岛奇兵有木有版本是用qq号登 白毛毫茶有什么作用? 看电影小孩要买票吗 看电影小孩需要买票吗解析 微信视频为什么黑屏 填写学生会体育部的招聘表工作经历及自我认识一栏怎么填? 我的华为手机进水了能维修吗? 刚入手MC508 21.5低配,到家开机后就一直有嗡鸣声,求救~ 网上有说是imac嗡鸣/共振/低频 电脑一体机配置问题 32周彩超显示左心室点状强回声斑,并且双肾盂分离左肾0.6mm右肾0.7mm,这种情况严重吗? 庚字造句 好省里的东西怎么弄挂到快手里?