缓冲相关
Nginx默认有缓冲设计,因为客户端往往有很大的不同的连接速度。我们可以用以下指令调节缓冲行为。可以在HTTP,server或 location位置来设置。重要的是要记住,大小size指令是针对每个请求配置的,所以增加超出你需求会影响你的性能,如果这时有许多客户端请求:
proxy_buffering 默认为on 指令控制缓冲是否启用
当Proxybuffer启用之后,Nginx服务器首先尽可能从被代理服务器哪里接收响应数据,放置在proxy buffer中,buffer的大小有proxy_buffer_size和proxy buffers指定决定,如果在接收过程中,发现buffer没有足够的大小来接收一次响应数据,nginx服务器会将接收到的数据临时存放到磁盘的临时文件中,磁盘上的临时文件路径可以通过proxy_temp_path指令进行设置,临时文件的大小有proxy_max_temp_file_size指令决定,一次响应数据接收完成后,nginx服务器在向客户端传输数据
1、proxy_buffers number size
Syntax: proxy_buffers number size;
Default:
proxy_buffers 8 4k|8k;
Context: http, server, location
该指令控制代理响应缓冲区的数量(第一个参数)和大小(第二个参数)
该指令用于配置接收一次被代理服务器响应数据的个数和每个buffer的大小
2、proxy_buffer_size
语法:
proxy_buffer_size size
默认值
proxy_buffer_size 4k |8k
作用:
该指令设置缓冲区大小,从后端服务器取得的第一部分的响应内容,会存放到这里。小的响应
header通常位于这里
常见问题:
1) nginx buffer 设置太小,如果 URL 比较长导致 504 错误的故障
3、proxy_buffering
语法: proxy_buffering on|off
默认值: proxy_buffering on
上下文: http, server, location
作用: 这个参数用来控制是否打开后端响应内容的缓冲区,如果这个设置为off,那么proxy_buffers和proxy_busy_buffers_size这两个指令将会失效。 但是无论proxy_buffering是否开启,对proxy_buffer_size都是生效的。
proxy_buffering开启后,nginx会把后端返回的内容先放到缓冲区,然后在返回给客户端(边收边传)
如果响应内容无法放到内存里,会被写到磁盘上
如果proxy_buffering关闭,nginx立即把从后端接收到响应内容传送给客户端,每次取得
4、
proxy_temp_path path [Level 1 [ Level 2 [ Level 3]]]
案例;
![](https://box.kancloud.cn/e3ab9399ee63cb3da138beb77263bab0_949x189.png)
proxy_max_temp_file_size #size
该离职用于配置所有临时文件的总体大小,存放在磁盘上临时文件大小不能超过该配置值
案例:
proxy_max_temp_file_size 1024;
proxy_temp_file_write_size:
该指令用于配置同时写入临时文件的数据量的总大小,
一般设置为8k或16k。
案例:
proxy_buffer_size 256k; #代理请求缓冲区,会保存用户的头信息以供nginx进行处理
proxy_buffers 4 256k; #同上,告诉nginx保存单个用几个buffer最大用多少空间
proxy_busy_buffers_size 256k; #如果系统很忙时候可以申请最大proxy_buffers
proxy_temp_file_write_size 256k; #proxy缓存临时文件的大小
location /bbs/ {
proxy_pass http://server;
proxy_set_header host $Host;
proxy_buffering on;
proxy_buffers 8 4k;
proxy_buffer_size 4k;
proxy_temp_path /var/tmp/nginx/buffer 1 2;
proxy_max_temp_file_size 1024;
}
三、proxy_pass
语法:Syntax: proxy_pass URL;
Default: —
Context: location, if in location, limit_except
案例:
location /name/ {
proxy_pass http://127.0.0.1/remote/;
}
location /some/path/ {
proxy_pass http://127.0.0.1;
}
location /name/ {
proxy_pass http://127.0.0.1$request_uri;
}
注意:
1、如果location采用了模式匹配 ~ ~*, 该url会直接补在后面
比如
location ~* /test/a.html {
proxy_pass http://10.100.100.2
}
代理服务器会把/test/a.html直接补在后面 http://10.100.100.2/test/a.html
2、如果加了rewrite,会把重写后的地址,直接补在后面
四、proxy_set_header
Syntax: proxy_set_header field value;
Default:
proxy_set_header Host $proxy_host;
proxy_set_header Connection close;
Context: http, server, location
案例:
proxy_set_header Host $host:$proxy_port;
proxy_set_header Host $host;
If the value of a header field is an empty string then this field will not be passed to a proxied server:
proxy_set_header Accept-Encoding "";
五、设置一个临时文件的
Syntax: proxy_max_temp_file_size size;
Default:
proxy_max_temp_file_size 1024m;
Context: http, server, location
第二部分: proxy_ssl相关的
![](https://box.kancloud.cn/62fe2ffb404f64e59743e4706151e6ba_413x271.png)
案例:
proxy_set_header Client-Cert $ssl_client_cert; # 将客户端证书放到http头中传递给后端的tomcat
proxy_ssl_certificate localhost.pem; # 如果后端的tomcat也要求客户端认证,则nginx与tomcat建立连接时会把该证书发送给tomcat
proxy_ssl_certificate_key localhost.key;
proxy_ssl_trusted_certificate chain.pem; # 如果启用了proxy_ssl_verify,则使用该文件中的CA公钥验证后端tomcat的证书
proxy_ssl_verify on; # nginx是否验证后端tomcat的证书
proxy_ssl_verify_depth 2;
第三部分:超时时常
1、 proxy_connect_timeout time;
默认为60s
代理服务器连接到后端服务器的超时时间(与upstream服务器的连接超时时间)
2、proxy_send_timeout 默认为60s
该指令配置nginx服务向后端被代理服务器发出write请求后,等待响应的超时时间
3、proxy_read_timeout
该指令配置nginx服务器向后端被代理服务器发出read请求后,等待响应的超时时间
默认为60s
4、proxy_send_timeout
这个指定设置了发送请求给upstream服务器的超时时间
默认为60s
- 第一部分:Nginx Web服务
- 第一章: Nginx的初探
- 第二章:Nginx的安装部署
- 第一节:在centos6上通过Yum安装Nginx
- 第二节:在Centos7上通过Yum安装nginx
- 第三节:编译安装Nginx服务
- 第四节: Nginx编译参数详解
- 第五节: Nginx的启动脚本
- 第六节:Nginx的shell脚本安装
- 第七节:nginx服务的平滑升级
- 第三章:Nginx服务基础配置
- 第一节: 配置运行nginx服务器用户
- 第二节:配置运行生成的worker processes进程数
- 第三节:配置Nginx进程PID存放路径
- 第四节:定义MIME类型
- 第五节:自定义nginx的访问日志
- 第六节:主配置段(main)常用的配置
- 第七节:http段(核心)常用的配置命令
- 第八节:配置nginx中的location段
- 第九节: 基于IP的访问控制
- 第十节:基于用户的访问控制
- 第十一节:Nginx定义status状态页
- 第十二节:Nginx服务器Rewrite重写
- 第十三节:Nginx服务配置防盗链
- 第十四节:nginx软件的优点
- 第四章:Nginx服务器的优化配置
- 第一节:nginx.conf配置文件基本参数优化
- 第二节:fastcgi调优
- 第三节:Gzip调优
- 第四节:expires缓存调优
- 第五节:内核参数优化
- 第六节: Nginx之——413 修改上传文件大小限制
- 第五章:Nginx虚拟主机的配置
- 第一节:基于名称的虚拟主机
- 第二节:通过shell脚本添加虚拟主机
- 第六章:Nginx常用模块指令详解
- 第一节:ngx_http_realip_module
- 第二节:http_image_filter_module
- 第三节:tengine中配置consistent hash module
- 第四节:ngx_http_userid_module
- 第七章:Nginx服务器配置HTTPS访问
- 第八章: Nginx服务器日志切割
- 第二部分:Nginx负载均衡反向代理服务
- 第一章:Nginx进阶参数详解
- 第一节:proxy_module参数详解
- 第二节:upstream_module参数详解
- 第四章:Nginx反向代理服务
- 第一节:Nginx反向代理配置参数详解
- 第二节:Nginx反向代理服务配置案例
- 第三节:Nginx缓存
- 第四节: Nginx中fastcgi模块
- 第五节:nginx+fastcgi实现动静分离架构
- 第五章:Nginx负载均衡
- 第一节:ngx_http_upstream_module常见指令
- 第二节:调度方法
- 第三节:健康状态检查