Nginx模块参考手册:HTTP代理模块(HTTP Proxy)

这些模块默认会全部编译进Nginx,除非手工指定某个模块在configure时排除。

这个模块可以转发请求到其他的服务器。HTTP/1.0无法使用keepalive(后端服务器将为每个请求创建并且删除连接)。nginx为浏览器发送HTTP/1.1并为后端服务器发送HTTP/1.0,这样浏览器就可以为浏览器处理keepalive。
如下例:

location / { proxy_pass http://localhost:8000; proxy_set_header X-Real-IP $remote_addr;}

注意当使用http proxy模块(甚至FastCGI),所有的连接请求在发送到后端服务器之前nginx将缓存它们,因此,在测量从后端传送的数据时,它的进度显示可能不正确。

指令

proxy_bind

语法:proxy_bind address
默认值:none
使用字段:http, server, location
可用版本:≥ 0.8.22
示例:

proxy_bind 192.168.1.1;

在调用connect()前将上游socket绑定到一个本地地址,如果主机有多个网络接口或别名,但是你希望代理的连接通过指定的借口或地址,可以使用这个指令。

proxy_buffer_size

语法:proxy_buffer_size the_size
默认值:proxy_buffer_size 4k/8k
使用字段:http, server, location
设置从被代理服务器读取的第一部分应答的缓冲区大小。
通常情况下这部分应答中包含一个小的应答头。
默认情况下这个值的大小为指令proxy_buffers中指定的一个缓冲区的大小,不过可以将其设置为更小。

proxy_buffering

语法:proxy_buffering on|off
默认值:proxy_buffering on
使用字段:http, server, location
为后端的服务器启用应答缓冲。
如果启用缓冲,nginx假设被代理服务器能够非常快的传递应答,并将其放入缓冲区,可以使用 proxy_buffer_size和proxy_buffers设置相关参数。
如果响应无法全部放入内存,则将其写入硬盘。
如果禁用缓冲,从后端传来的应答将立即被传送到客户端。
nginx忽略被代理服务器的应答数目和所有应答的大小,接受proxy_buffer_size所指定的值。
对于基于长轮询的Comet应用需要关闭这个指令,否则异步的应答将被缓冲并且Comet无法正常工作。

proxy_buffers

语法:proxy_buffers the_number is_size;
默认值:proxy_buffers 8 4k/8k;
使用字段:http, server, location
设置用于读取应答(来自被代理服务器)的缓冲区数目和大小,默认情况也为分页大小,根据操作系统的不同可能是4k或者8k。

proxy_busy_buffers_size

语法:proxy_busy_buffers_size size;
默认值:proxy_busy_buffers_size proxy_buffer_size * 2;
使用字段:http, server, location, if
未知。

proxy_cache

语法:proxy_cache zone_name;
默认值:None
使用字段:http, server, location
设置一个缓存区域的名称,一个相同的区域可以在不同的地方使用。
在0.7.48后,缓存遵循后端的”Expires”, “Cache-Control: no-cache”, “Cache-Control: max-age=XXX”头部字段,0.7.66版本以后,”Cache-Control:“private”和”no-store”头同样被遵循。nginx在缓存过程中不会处理”Vary”头,为了确保一些私有数据不被所有的用户看到,后端必须设置 “no-cache”或者”max-age=0”头,或者proxy_cache_key包含用户指定的数据如$cookie_xxx,使用cookie的值作为proxy_cache_key的一部分可以防止缓存私有数据,所以可以在不同的location中分别指定proxy_cache_key的值以便分开私有数据和公有数据。
缓存指令依赖代理缓冲区(buffers),如果proxy_buffers设置为off,缓存不会生效。

proxy_cache_bypass

语法: proxy_cache_bypass line […];
默认值: off
使用字段: http, server, location
这个指令指定不使用缓存返回应答的条件,如果指定的变量中至少有一个为非空,或者不等于“0”,这个应答将不从缓存中返回:

proxy_cache_bypass $ cookie_nocache $ arg_nocache $ arg_comment; proxy_cache_bypass $ http_pragma $ http_authorization;

可以结合proxy_no_cache使用。

proxy_cache_key

语法:proxy_cache_key line;
默认值:$scheme$proxy_host$request_uri;
使用字段:http, server, location
指令指定了包含在缓存中的缓存关键字。

proxy_cache_key "$host$request_uri$cookie_user";

注意默认情况下服务器的主机名并没有包含到缓存关键字中,如果你为你的站点在不同的location中使用二级域,你可能需要在缓存关键字中包换主机名:

proxy_cache_key "$scheme$host$request_uri";

proxy_cache_methods

语法:proxy_cache_methods [GET HEAD POST];
默认值:proxy_cache_methods GET HEAD;
使用字段:http, server, location
GET/HEAD用来装饰语句,即你无法禁用GET/HEAD即使你只使用下列语句设置:

proxy_cache_methods POST;

proxy_cache_min_uses

语法:proxy_cache_min_uses the_number;
默认值:proxy_cache_min_uses 1;
使用字段:http, server, location
多少次请求后应答将被缓存,默认1。

proxy_cache_path

语法:proxy_cache_path path [levels=number] keys_zone=zone_name:zone_size [inactive=time] [max_size=size];
默认值:None
使用字段:http
指令指定缓存的路径和一些其他参数,缓存的数据存储在文件中,并且使用代理url的哈希值作为关键字与文件名。levels参数指定缓存的子目录数,例如:

proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=one:10m;

文件名类似于:

/data/nginx/cache/c/29/b7f54b2df7773722d382f4809d65029c

可以使用任意的1位或2位数字作为目录结构,如 X, X:X,或X:X:X e.g.: “2”, “2:2”, “1:1:2”,但是最多只能是三级目录。
所有活动的key和元数据存储在共享的内存池中,这个区域用keys_zone参数指定。
注意每一个定义的内存池必须是不重复的路径,例如:

proxy_cache_path /data/nginx/cache/one levels=1 keys_zone=one:10m;proxy_cache_path /data/nginx/cache/two levels=2:2 keys_zone=two:100m;proxy_cache_path /data/nginx/cache/three levels=1:1:2 keys_zone=three:1000m;

如果在inactive参数指定的时间内缓存的数据没有被请求则被删除,默认inactive为10分钟。
一个名为cache manager的进程控制磁盘的缓存大小,它被用来删除不活动的缓存和控制缓存大小,这些都在max_size参数中定义,当目前缓存的值超出max_size指定的值之后,超过其大小后最少使用数据(LRU替换算法)将被删除。
内存池的大小按照缓存页面数的比例进行设置,一个页面(文件)的元数据大小按照操作系统来定,FreeBSD/i386下为64字节,FreeBSD/amd64下为128字节。
proxy_cache_path和proxy_temp_path应该使用在相同的文件系统上。

时间: 2024-12-21 07:04:11

Nginx模块参考手册:HTTP代理模块(HTTP Proxy)的相关文章

Nginx模块参考手册:Map模块(Map)

这些模块默认会全部编译进Nginx,除非手工指定某个模块在configure时排除. 这个模块允许你分类或者同时映射多个值到多个不同值并储存到一个变量中,map指令用来创建变量,但是仅在变量被接受的时候执行视图映射操作,对于处理没有引用变量的请求,这个模块并没有性能上的缺失. 如下例: map $http_host $name { hostnames; default 0; example.com 1; *.example.com 1; test.com 2; *.test.com 2; .si

Nginx模块参考手册:FastCGI模块(FastCGI)

这些模块默认会全部编译进Nginx,除非手工指定某个模块在configure时排除. &http://www.aliyun.com/zixun/aggregation/37954.html">nbsp; 这个模块允许nginx同FastCGI协同工作,并且控制哪些参数将被安全传递.例: location / { fastcgi_pass localhost:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /h

Nginx模块参考手册:日志模块(Log)

这些模块默认会全部编译进Nginx,除非手工指定某个模块在configure时排除. 控制nginx如何记录请求日志.例: log_format gzip '$remote_addr - $remote_user [$time_local] ' '"$request" $status $bytes_sent ' '"$http_referer" "$http_user_agent" "$gzip_ratio"'; access

Nginx模块参考手册:SSI模块(SSI)

这些模块默认会全部编译进Nginx,除非手工指定某个模块在configure时排除. 这个模块为处理服务器端包含(SSI)的输入提供一个过滤器,目前所支持的SSI命令并不完善.如下例: location / { ssi on;} 指令 ssi 语法:ssi [ on | off ] 默认值:ssi off 使用字段:http, server, location, location中的if字段 启用SSI处理.注意如果启用SSI,那么Last-Modified头和Content-Length头不会

Nginx模块参考手册:Scgi模块(Scgi)

这些模块默认会全部编译进Nginx,除非手工指定某个模块在configure时排除. 这个模块允许nginx同Scgihttp://www.aliyun.com/zixun/aggregation/18521.html">协同工作,并且控制哪些参数将被安全传递,这个页面基本是拷贝自FastCGI与proxy,所以并不一定完全准确.这个模块最早可用于版本0.8.42.例: location / { include scgi_params; scgi_pass localhost: 9000;

Nginx模块参考手册:Geo模块(Geo)

这些模块默认会全部编译进Nginx,除非手工指定某个模块在configure时排除. 这个模块创建一些变量,其值依赖于客户端的IP地址:如下例: geo $geo { default 0; 127.0.0.1/32 2; 192.168.1.0/24 1; 10.1.0.0/16 1;} 指令 geo 语法:geo [$ip_variable] $variable { - } 默认值:none 使用字段:http 这个指令指定了一个客户端IP的所属国家,默认情况下它会查找$remote_addr

Nginx模块参考手册:uWSGI模块(uWSGI)

这些模块默认会全部编译进Nginx,除非手工指定某个模块在configure时排除. 为uwsgi协议提供支持.示例配置: location / { uwsgi_pass unix:///var/run/example.com.sock; include uwsgi_http://www.aliyun.com/zixun/aggregation/12616.html">params; } 注意不要把uwsgi协议和uWSGI服务器混淆. 指令 uwsgi_pass 语法:uwsgi_pas

Nginx模块参考手册:Memcached模块(Memcached)

这些模块默认会全部编译进Nginx,除非手工指定某个模块在configure时排除. 使用这个模块简单的处理缓存.示例配置: server { location / { set $memcached_key $uri; memcached_pass http://www.aliyun.com/zixun/aggregation/11696.html">name:11 211; default_type text/html; error_page 404 = /fallback; } loc

Nginx模块参考手册:事件模块(Events Module)

摘要 控制Nginx处理连接的方式 指令 accept_mutex 语法:accept_mutex [ on | off ] 默认值:on Nginx使用连接互斥锁进行顺序的accept()系统调用 accept_mutex_delay 语法:accept_mutex_delay Nms; 默认值:500ms如果一个进程没有互斥锁,它将至少在这个值的时间后被回收,默认是500ms debug_connection 语法:debug_connection [ip | CIDR] 默认值:none

Nginx模块参考手册:主模块(Main Module)

摘要 包含一些Nginx的基本控制功能 指令 daemon 语法:daemon on | off默认值:on daemon off; 生产环境中不要使用"daemon"和"master_process"指令,这些指令仅用于开发调试.虽然可以使用daemon off在生产环境中,但对性能提升没有任何帮助,但是在生产环境中永远不要使用master_process off. env 语法:env VAR|VAR=VALUE默认值:TZ使用字段:main这个命令允许其限定一