您的位置:首页 > 运维架构 > Nginx

Nginx代理功能(未完)

2015-12-03 21:27 661 查看
Nginx代理模块允许传递请求到其它的服务器。

指令
Syntax: proxy_bind address | off;
Default: —
Context: http, server, location
This directive appeared in version 0.8.22.

强制将与代理本机连接绑到指定IP地址,通俗来讲就是配置了多个基于名称或者基于IP的主机情况下,如果希望代理连接由指定的主机处理,就可以使用该指令进行配置。
当值为off,系统自动分配本机IP地址。

Syntax: proxy_buffer_size size;
Default: proxy_buffer_size 4k|8k;
Context: http, server, location
设置第一次从代理服务器收到的响应的buffer的大小。这部分通常包含小的响应头部。默认,buffer大小等于内存页大小。可以是4K或8K,依赖于系统平台。当然也可以更小。

Syntax: proxy_buffering on | off;
Default: proxy_buffering on;
Context: http, server, location
开启或关闭代理服务器的响应buffer功能。当nginx收到代理服务器的响应时候,它通过proxy_buffer_size和proxy_buffer指令设置。如果正响应没有合适的内存,部分可以保存在temporary_file里面。写入内存则通过proxy_max_temp_file_size 和 proxy_temp_file_write_size指令来设置。
当buffering关闭的时候,请求传递到客户端是同步的,当nginx收到响应的时候,立即回复。收到响应数据的最大大小可以被proxy_buffer_size指令设置。
bufferring可以开启或禁止传递yes或no在”X-Accel-Buffering”响应头部中设置。这个能力可以使用proxy_ignore_headers指令禁止。

Syntax: proxy_buffers number size;
Default: proxy_buffers 8 4k|8k;
Context: http, server, location
类似于gzip_buffers不在叙述。

Syntax: proxy_busy_buffers_size size;
Default: proxy_busy_buffers_size 8k|16k;
Context: http, server, location
该指令限制同时处于busy状态的buffer大小,默认size为两倍的proxy_buffer_size和proxy_buffer指令的大小。

Syntax: proxy_cache zone | off;
Default: proxy_cache off;
Context: http, server, location
定义一个用于缓存的的共享内存区间,同样的区间可以被用在几个位置。参数值可以包含变量。off参数禁止缓存。

Syntax: proxy_cache_bypass string ...;
Default: —
Context: http, server, location
定义一个条件,什么响应不会从cache中获取。如果字符串参数至少一个值而且不为空,那么响应不会从cache中获取。
proxy_cache_bypass $cookie_nocache $arg_nocache$arg_comment;
proxy_cache_bypass $http_pragma $http_authorization;
可以同proxy_no_cache指令一起使用。

Syntax: proxy_cache_convert_head on | off;
Default: proxy_cache_convert_head on;
Context: http, server, location
This directive appeared in version 1.9.7.
开启或禁止或禁止HRAD方法会话。当会话被禁止了,cache_key应该被配置为包含$request_method

Syntax: proxy_cache_key string;
Default: proxy_cache_key $scheme$proxy_host$request_uri;
Context: http, server, location
定义缓存的key,例如。
proxy_cache_key "$host$request_uri $cookie_user";
默认这个指令的值紧跟着字符串
proxy_cache_key $scheme$proxy_host$uri$is_args$args;

Syntax:proxy_cache_lock on | off;
Default:proxy_cache_lock off;
Context:http, server, location
当开启之后,只有一个请求在一段时间内被允许填充新的cache元素,根据proxy_cache_key指令来标示是什么cache传递到代理服务器。其它相同cache的请求要么等待cache中的响应,要么锁住这个cahe释放,根据proxy_cache_lock_timeout指令来设置。

Syntax: proxy_cache_lock_age time;
Default: proxy_cache_lock_age 5s;
Context: http, server, location
如果最近的请求传递到被代理的服务器来填充新的cache元素,还没有完成,一个或更多请求可以被传递到代理服务器。

Syntax: proxy_cache_lock_timeout time;
Default: proxy_cache_lock_timeout 5s;
Context: http, server, location
设置proxy_cahce_lock的超时时长,当time过期的时候,这个请求会传递到被代理的服务器,不管怎么样,响应不会被cached。
Before 1.7.8, the response could be cached.

Syntax: proxy_cache_methods GET | HEAD | POST ...;
Default: proxy_cache_methods GET HEAD;
Context: http, server, location
客户端的请求方法列出在这个指令中,然后想要被cached,”GET”和”HEAD”方法一直被加入这个list中,尽管官方要求精确的指定方法。

Syntax: proxy_cache_min_uses number;
Default: proxy_cache_min_uses 1;
Context: http, server, location
在响应数据被cached之后,发送给客户端的次数。

Syntax: proxy_cache_path path [levels=levels] [use_temp_path=on|off] keys_zone=name:size [inactive=time] [max_size=size] [loader_files=number] [loader_sleep=time] [loader_threshold=time] [purger=on|off] [purger_files=number] [purger_sleep=time] [purger_threshold=time];
Default: —
Context: http
设置cahe的路径和其它参数,cache数据存储在文件里面,这个文件名是在cache中为应用MD5函数的结果。levels参数定义cache的层级关系。例如,在下面的配置中
proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m;
文件名看起来就像这样
/data/nginx/cache/c/29/b7f54b2df7773722d382f4809d65029c

Syntax: proxy_cache_purge string ...;
Default: —
Context: http, server, location
This directive appeared in version 1.5.7.
定义一个条件,什么请求会被看做清除cache的请求。类似于proxy_cache_bypass。
案例:
proxy_cache_path /data/nginx/cache keys_zone=cache_zone:10m;

map $request_method $purge_method {
PURGE 1;
default 0;
}

server {
...
location / {
proxy_pass http://backend; proxy_cache cache_zone;
proxy_cache_key $uri;
proxy_cache_purge $purge_method;
}
}

Syntax: proxy_cache_revalidate on | off;
Default: proxy_cache_revalidate off;
Context: http, server, location
开启cache重用功能,如果请求使用了”If-Modified-Since”和”If-None-Match”头部元素。

Syntax: proxy_cache_valid [code ...] time;
Default: —
Context: http, server, location
为不同的响应码设置不同的cache时间
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;

指令实在是太多,请参考原文 http://nginx.org/en/docs/http/ngx_http_proxy_module.html
实例:
upstrean videobackend
{
server 192.168.1.2:80;
server 192.168.1.3:80;
server 192.168.1.4:80;
}
upstream filebackend
{
server 192.168.1.5:80;
server 192.168.1.6:80;
server 192.168.1.7:80;
}
server
{
listen 80;
server_name www.myweb.com
index index.html index.htm;
location /video/ {
proxy_pass http://videobackend; proxy_set_header host $host ;
……
}
location /file/ {
proxy_pass http://filebackend; proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
……
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Nginx