网站首页 > 技术教程 正文
概述
今天主要介绍代理服务器的基本配置,如何通过不同协议将NGINX请求传递给代理的服务器,修改发送到代理服务器的客户端请求标头,以及配置来自代理服务器的响应缓冲。
代理服务器的基本配置目录
- 代理服务器介绍
- 将请求传递给代理的服务器
- 传递请求标头
- 配置缓冲区
- 选择传出IP地址
1. 代理服务器介绍
代理通常用于在多个服务器之间分配负载,无缝地显示来自不同网站的内容,或者通过HTTP以外的协议将请求传递给应用服务器。
2. 将请求传递给代理的服务器
当NGINX代理请求时,它将请求发送到指定的代理服务器,获取响应,并将其发送回客户端。 可以使用指定的协议将请求代理到HTTP服务器(另一个NGINX服务器或任何其他服务器)或非HTTP服务器。
要将请求传递给HTTP代理服务器,则在一个块内指定指令。 例如:
location /some/path/ { proxy_pass http://www.example.com/link/; }
此示例配置将在此location处理的所有请求传递到指定地址(http://www.example.com/link/)处的代理服务器。该地址可以指定为域名或IP地址。 该地址还可能包括一个端口:
location ~ \.php { proxy_pass http://127.0.0.1:8000; }
在上述第一个示例中,代理服务器的地址后面是URI为 /link/。 如果URI与地址一起指定,它将替换与location参数匹配请求URI的部分。
要将请求传递给非HTTP代理服务器,应使用适当的**_ pass指令:
- fastcgi_pass 将请求传递给FastCGI服务器
- uwsgi_pass 将请求传递给uwsgi服务器
- scgi_pass 将请求传递给SCGI服务器
- memcached_pass 将请求传递给memcached服务器
proxy_pass指令也可以指向一组命名的服务器。 在这种情况下,根据指定的方法在组中的服务器之间分配请求。
3. 传递请求标头
默认情况下,NGINX在代理请求“Host” 和 “Connection”中重新定义了两个头字段,并消除了其值为空字符串的头字段。 “Host”设置为$proxy_host变量,“Connection”设置为关闭(close)。
要更改这些设置,以及修改其他header字段,请使用proxy_set_header指令。 该指令可以在一个或多个位置(location)指定。 它也可以在特定的server上下文或http块中指定。 例如:
location /some/path/ { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://localhost:8000; }
在此配置中,“Host”字段设置为 变量。
为了防止头域被传递给代理服务器,请将其设置为空字符串,如下所示:
location /some/path/ { proxy_set_header Accept-Encoding ""; proxy_pass http://localhost:8000; }
4. 配置缓冲区
默认情况下,NGINX缓存来自代理服务器的响应。 响应存储在内部缓冲区中,并且不会发送到客户端,直到收到整个响应。 缓冲有助于通过慢客户端优化性能,如果响应从NGINX同步传递到客户端,这可能会浪费代理服务器时间。 然而,当启用缓冲时,NGINX允许代理服务器快速处理响应,而NGINX存储响应时间与客户端需要下载的时间一样长。
proxy_buffers指令控制分配给请求的缓冲区的大小和数量。 来自代理服务器的响应的第一部分存储在单独的缓冲区中,其大小由指令设置。 这部分通常包含一个比较小的响应头,并且可以比其余的响应的缓冲区小。
在以下示例中,缓冲区的默认数量增加,并且响应的第一部分的缓冲区的大小小于默认值。
location /some/path/ { proxy_buffers 16 4k; proxy_buffer_size 2k; proxy_pass http://localhost:8000; }
如果缓存被禁用,则在从代理服务器接收缓冲时,响应将同步发送到客户端。 对于需要尽快开始接收响应的快速交互式客户端,此行为可能是可取的。
要禁用特定位置的缓冲,请在location块中将proxy_buffering伪指令设置为off,如下所示:
location /some/path/ { proxy_buffering off; proxy_pass http://localhost:8000; }
在这种情况下,NGINX只使用由proxy_buffer_size配置的缓冲区来存储响应的当前部分。
5. 选择传出IP地址
如果您的代理服务器有多个网络接口,有时您可能需要选择特定的源IP地址才能连接到代理服务器或上游。 如果NGINX后端的代理服务器只配置为接受来自特定IP网络或IP地址范围的连接,在这种情况下,这个配置选项就很有用。
指定指令和必要网络接口的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地址也可以用变量指定。 例如,变量传递接受请求的网络接口的IP地址:
location /app3/ { proxy_bind $server_addr; proxy_pass http://example.com/app3/; }
篇幅有限,关于nginx反向代理就介绍到这了,大家有空可以自己测试一下。
后面会主要分享DBA和devops内容,感兴趣的朋友也可以关注下!
猜你喜欢
- 2024-10-09 不懂Nginx正反向代理?没关系,只要会买东西你就明白了
- 2024-10-09 深度详解Nginx正向代理与反向代理?
- 2024-09-10 如何玩转nginx正反向代理(nginx反向代理的几种模式)
- 2024-09-10 nginx如何配置正向代理之非常简单操作
- 2024-09-10 nginx常用模块及反向代理(nginx反向代理配置实例)
- 2024-09-10 nginx代理https妈妈级教程(nginx代理https)
- 2024-09-10 图文讲解:如何使用 Nginx 反向代理、负载均衡
- 2024-09-10 nginx配置tcp代理(nginx tcp代理)
- 2024-09-10 使用 Nginx 作为你的开发代理工具
- 2024-09-10 网页服务-Nginx - 反向代理 - 基于浏览器
你 发表评论:
欢迎- 最近发表
-
- linux日志文件的管理、备份及日志服务器的搭建
- Linux下挂载windows的共享目录操作方法
- Linux系统中的备份文件命令(linux系统中的备份文件命令有哪些)
- 麒麟KYLINOS|通过不同方法设置用户访问文件及目录权限
- 「Linux笔记」系统目录结构(linux目录的结构及含义)
- linux中修改归属权chown命令和chgrp命令
- 工作日报 2021.10.27 Android-SEAndroid权限问题指南
- Windows和Linux环境下,修改Ollama的模型默认保存路径
- 如何强制用户在 Linux 上下次登录时更改密码?
- 如何删除Linux文件夹中除某些扩展名之外的所有文件?
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)