proxy_set_header用来设定被代理服务器接收到的header信息
语法:proxy_set_header field value;
field为要更改的项目,也可以理解为变量的名字,比如host,value为变量的值
如果不设置proxy_set_header,则默认host的值为proxy_pass后面跟的那个域名或者IP(一般写IP),后端服务器接受不到或者是错误的header信息
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;#如果这台机器前面还有nginx代理,那么这条配置就可以跳过nginx或者代理服务器,直接把客户端IP透过来
用来设置后端服务器接收到的远程客户端IP,如果不设置,则header信息中并不会透传远程真实客户端的IP地址
Buffer
proxy_buffering on; #开启buffer功能
proxy_buffer_size 4k; #B接收并存储C相应的数据头大小(一般是header)
proxy_buffers 2 4k; #B中buffer的个数和每个的大小
proxy_busy_buffers_size 4k; #B到返回给A过程中决定buffer到多少时返回,如果数据小于这个大小那么直接返回
proxy_temp_path /tmp/nginx_proxy_tmp 1 2; #定义proxy的临时文件存在目录以及目录的层级。1表示层级1的目录名为一个数字(0-9),2表示层级2目录名为2个数字(00-99)
proxy_max_temp_file_size 20M; #设置临时文件的总大
proxy_temp_file_write_size 8k; #设置同时写入临时文件的数据量的总大小。通常设置为8k或者16k
Cache
proxy_cache
语法:proxy_cache zone|off
默认为off,即关闭proxy_cache功能,zone为用于存放缓存的内存区域名称。
例:proxy_cache my_zone;
proxy_cache_bypass
语法:proxy_cache_bypass string;
该参数设定,什么情况下的请求不读取cache而是直接从后端的服务器上获取资源。
这里的string通常为nginx的一些变量。
例:proxy_cahce_bypass $cookie_nocache $arg_nocache$arg_comment;
意思是,如果$cookie_nocache $arg_nocache$arg_comment这些变量的值只要任何一个不为0或者不为空时,
则响应数据不从cache中获取,而是直接从后端的服务器上获取。
proxy_no_cache
语法:proxy_no_cache string;
该参数和proxy_cache_bypass类似,用来设定什么情况下不缓存。
proxy_cache_path(不要写在server段,写在http段里)--核心配置
语法:proxy_cache_path path [levels=levels] keys_zone=name:size [inactive=time] [max_size=size]
path设置缓存数据存放的路径;levels设置目录层级,如levels=1:2,表示有两级子目录,第一个目录名取md5值的倒数第一个值,第二个目录名取md5值的第2和3个值
keys_zone设置内存zone的名字和大小,如keys_zone=my_zone:10minactive设置缓存多长时间就失效,当硬盘上的缓存数据在该时间段内没有被访问过,就会失效了,该数据就会被删除,默认为10s。
max_size设置硬盘中最多可以缓存多少数据,当到达该数值时,nginx会删除最少访问的数据。
例:proxy_cache_path /data/nginx_cache/ levels=1:2 keys_zone=my_zone:10m inactive=300s max_size=5g