ngx_http_proxy_module 模块 |
发表者:admin分类:Devops2015-07-01 21:36:57 阅读[2123] |
ngx_http_proxy_module 模块 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
翻译内容可能已经过旧。你可以通过 英文版本查看最近的更新。
配置示例location / { proxy_pass http://localhost:8000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; }
指令
设置缓冲区的大小为
代理的时候,开启或关闭缓冲后端服务器的响应。 当开启缓冲时,nginx尽可能快地从被代理的服务器接收响应,再将它存入proxy_buffer_size和proxy_buffers指令设置的缓冲区中。如果响应无法整个纳入内存,那么其中一部分将存入磁盘上的临时文件。proxy_max_temp_file_size和proxy_temp_file_write_size指令可以控制临时文件的写入。 当关闭缓冲时,收到响应后,nginx立即将其同步传给客户端。nginx不会尝试从被代理的服务器读取整个请求,而是将proxy_buffer_size指令设定的大小作为一次读取的最大长度。 响应头“X-Accel-Buffering”传递“
为每个连接设置缓冲区的数量为
当开启缓冲响应的功能以后,在没有读到全部响应的情况下,写缓冲到达一定
指定用于页面缓存的共享内存。同一块共享内存可以在多个地方使用。
定义nginx不从缓存取响应的条件。如果至少一个字符串条件非空而且非“0”,nginx就不会从缓存中去取响应: proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment; proxy_cache_bypass $http_pragma $http_authorization; 本指令可和与proxy_no_cache一起使用。
定义如何生成缓存的键,比如 proxy_cache_key "$host$request_uri $cookie_user"; 这条指令的默认值类似于下面字符串 proxy_cache_key $scheme$proxy_host$uri$is_args$args;
这个指令出现在版本 1.1.12. 开启此功能时,对于相同的请求,同时只允许一个请求发往后端,并根据proxy_cache_key指令的设置在缓存中植入一个新条目。其他请求相同条目的请求将一直等待,直到缓存中出现相应的内容,或者锁在proxy_cache_lock_timeout指令设置的超时后被释放。
这个指令出现在版本 1.1.12. 为proxy_cache_lock指令设置锁的超时。
设置响应被缓存的最小请求
设置缓存的路径和其他参数。缓存数据是保存在文件中的,缓存的键和文件名都是在代理URL上执行MD5的结果。 proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m; 缓存中文件名看起来是这样的: /data/nginx/cache/c/29/b7f54b2df7773722d382f4809d65029c
被缓存的响应首先写入一个临时文件,然后进行重命名。从0.8.9版本开始,临时文件和缓存可以放在不同的文件系统。但请注意,这将导致文件在这两个文件系统中进行拷贝,而不是廉价的重命名操作。因此,针对任何路径,都建议将缓存和proxy_temp_path指令设置的临时文件目录放在同一文件系统。 此外,所有活动的键和缓存数据相关的信息都被存放在共享内存中。共享内存通过 特殊进程“cache manager”监控缓存的条目数量,如果超过 nginx新启动后不就,特殊进程“cache loader”就被启动。该进程将文件系统上保存的过去缓存的数据的相关信息重新加载到共享内存。加载过程分多次迭代完成,每次迭代,进程只加载不多于
如果后端服务器出现状况,nginx是可以使用过期的响应缓存的。这条指令就是定义何种条件下允许开启此机制。这条指令的参数与proxy_next_upstream指令的参数相同。 此外, 在植入新的缓存条目时,如果想使访问源服务器的次数最少,可以使用proxy_cache_lock指令。
为不同的响应状态码设置不同的缓存时间。比如,下面指令 proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m; 设置状态码为200和302的响应的缓存时间为10分钟,状态码为404的响应的缓存时间为1分钟。 如果仅仅指定了 proxy_cache_valid 5m; 那么只有状态码为200、300和302的响应会被缓存。 如果使用了 proxy_cache_valid 200 302 10m; proxy_cache_valid 301 1h; proxy_cache_valid any 1m;
缓存参数也可以直接在响应头中设定。这种方式的优先级高于使用这条指令设置缓存时间。“X-Accel-Expires”响应头可以以秒为单位设置响应的缓存时间,如果值为0,表示禁止缓存响应,如果值以
设置与后端服务器建立连接的超时时间。应该注意这个超时一般不可能大于75秒。
这个指令出现在版本 1.1.15. 设置“Set-Cookie”响应头中的 proxy_cookie_domain localhost example.org; 将这个属性改写为“
proxy_cookie_domain www.$host $host;
这条指令同样可以使用正则表达式。这时, proxy_cookie_domain ~\.(?P<sl_domain>[-0-9a-z]+\.[a-z]+)$ $sl_domain;
可以同时定义多条 proxy_cookie_domain localhost example.org; proxy_cookie_domain ~\.([a-z]+\.[a-z]+)$ $1;
proxy_cookie_domain off; proxy_cookie_domain localhost example.org; proxy_cookie_domain www.example.org example.org;
这个指令出现在版本 1.1.15. 设置“Set-Cookie”响应头中的 proxy_cookie_path /two/ /; 将这个属性改写为“
proxy_cookie_path $uri /some$uri;
这条指令同样可以使用正则表达式。如果使用大小写敏感的匹配, proxy_cookie_path ~*^/user/([^/]+) /u/$1;
可以同时定义多条 proxy_cookie_path /one/ /; proxy_cookie_path / /two/;
proxy_cookie_path off; proxy_cookie_path /two/ /; proxy_cookie_path ~*^/user/([^/]+) /u/$1;
nginx默认不会将“Date”、“Server”、“X-Pad”,和“X-Accel-...”响应头发送给客户端。
这个指令出现在版本 1.1.4. 设置代理使用的HTTP协议版本。默认使用的版本是1.0,而1.1版本则推荐在使用keepalive连接时一起使用。
决定当客户端在响应传输完成前就关闭连接时,nginx是否应关闭后端连接。
不处理后端服务器返回的指定响应头。下面的响应头可以被设置:“X-Accel-Redirect”,“X-Accel-Expires”,“X-Accel-Limit-Rate” (1.1.6),“X-Accel-Buffering” (1.1.6),“X-Accel-Charset” (1.1.6),“Expires”,“Cache-Control”,和“Set-Cookie” (0.8.44)。 如果不被取消,这些头部的处理可能产生下面结果: |
转载请标明出处【ngx_http_proxy_module 模块 】。
《www.micoder.cc》
虚拟化云计算,系统运维,安全技术服务.
Tags: | [阅读全文...] |
最新评论