8.Nginx的代理服务

2022-02-28 分类:nginx 阅读(284) 评论(0)

孙富阳, 江湖人称没人称。多年互联网运维工作经验,曾负责过孙布斯大规模集群架构自动化运维管理工作。擅长Web集群架构与自动化运维,曾负责国内某大型博客网站运维工作。

1.Nginx代理服务基本概述

proxy 代理
网站:让网站可以承受更高并发/访问量
用户:通过代理上网加速/翻Q……..
反向代理与正向代理

1.正向代理

正向代理是为客户端提供服务
例如:
1.客户端科学的上网(翻墙)
2.客户端提速(游戏加速器)
3.客户端缓存(下载资源先查看代理是否有缓存,如果有直接从代理获取)
4.客户端授权(很多公司为了安全,连接外网需要通过防火墙,防火墙可以配置规则,允许谁可以上网,谁不可以上网)

2.反向代理

反向代理是为服务端提供服务
1.路由功能:根据用户请求的URI,调度到不同功能地服务器进行处理。
2.负载均衡:将用户发送的请求,通过负载均衡调度算法挑选一台合适的节点进行请求处理。
3.动静分离:根据用户请求的URI进行区分,将动态资源调度至应用服务器进程处理。将静态资源调度至静态资源服务器处理。
4.数据缓存:将后端查询的数据存储至反向代理上缓存,可以加速用户获取资源。

3.正反向代理的区别

区别在于形式上服务的对象不一样,其次架设的位置点不一样
正向代理代理的对象是客户端,为客户端服务
反向代理代理的对象是服务器,为服务器服务

2.Nginx反向代理常用模块

1.代理指令proxy_pass

Syntax:proxy_pass URL;
Default:
Context:locationif in locationlimit_except

2.设置或修改代理到后端,请求头的内容 proxy_set_header

Syntax:proxy_set_header field value;
Default:proxy_set_header Host $proxy_host;proxy_set_header Connection close;
Context:httpserverlocation
proxy_set_header Host   $http_host; #修改Host的内容
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #增加代理-->web请求头信息 让后端节点记录用户真实ip地址(客户端ip地址)

3.http版本proxy_http_version

Syntax:proxy_http_version 1.0 | 1.1;
Default:proxy_http_version 1.0;
Context:httpserverlocation
可以设置为1.1以保证一次链接多次请求

4.连接,读取,写入超时时间

#代理与后端节点 建立连接的超时时间proxy_connect_timeout   不建议超过75s

Syntax:proxy_connect_timeout time;
Default:proxy_connect_timeout 60s;
Context:httpserverlocation

#代理服务器读取后端响应的超时时间proxy_read_timeout

Syntax:proxy_read_timeout time;
Default:proxy_read_timeout 60s;
Context:httpserverlocation

#代理服务器发送请求给后端节点 超时时间proxy_send_timeout

Syntax:proxy_send_timeout time;
Default:proxy_send_timeout 60s;
Context:httpserverlocation

5.代理后端节点相应信息缓冲

####proxy_buffering  是否开启代理服务器 缓存后端节点的响应 报文信息(响应头和响应主体)

Syntax:proxy_buffering on | off;
Default:proxy_buffering on;
Context:httpserverlocation
####启用缓冲后,nginx会尽快从代理服务器接收响应,并将其保存到 proxy_buffer_size和proxy_buffers指令设置的缓冲区中。如果整个响应无法放入内存,则可以将部分响应保存到磁盘上的临时文件中。写入临时文件由proxy_max_temp_file_size和 proxy_temp_file_write_size指令控制。

##proxy_busy_buffers_size

Syntax:proxy_busy_buffers_size size;
Default:proxy_busy_buffers_size 8k|16k;
Context:httpserverlocation
##设置用于读取从代理服务器接收的响应的第一部分的缓冲区大小。 ##这部分通常包含一个小的响应头。

##为单个连接缓存响应信息 8 128k;proxy_buffers

Syntax:proxy_buffers number size;
Default:proxy_buffers 8 4k|8k;
Context:httpserverlocation
#为单个连接设置用于从代理服务器读取响应的缓冲区的数量和大小。 默认情况下,缓冲区大小等于一个内存页。这是4K或8K,取决于平台。

PS:通常情况下,我们可以将这些配置汇总一下写在一个文件里,编辑配置文件时直接include即可

[root@lb01 ~]# cat /etc/nginx/conf.d/proxy_blog.conf 
server {
	listen 80;
	server_name blog.com;
	location / {
		proxy_pass http://10.0.0.7;
		include proxy.params;
	}
}

[root@l01 ~]# cat /etc/nginx/proxy.params 
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 60;
proxy_read_timeout 60;
proxy_send_timeout 60;
proxy_buffering on;
proxy_buffer_size 8k;
proxy_buffers 4 64k;
proxy_http_version 1.1;

评论已关闭

登录

忘记密码 ?

切换登录

注册

鲁ICP备2021019243号-1