标签:blank target border style title
客户端访问的不是后端的真实服务器,而是反向代理服务器,当客户端发来一个请求,代理反向代理首先查找自己的缓存看是否有请求的资源有的话直接返回给客户端,没有的话到后端服务器去取资源而后返回给客户端,帮着服务器去处理请求.nginx工作于反向代理时的工作特性是,当客户端请求到达时直到把请求全部完全接受下来以后查找本地缓存没有的话才到后端去取,但是当响应客户端的请求时,会同时从后端服务器取资源同时响应客户端,不会像接受请求时完全接收后才去取资源因此,接受请求时是异步的.这样可以释放上游服务器的压力.
Nginx通过proxy模块实现反向代理功能。在作为web反向代理服务器时,nginx负责接收客户请求,并能够根据URI、客户端参数或其它的处理逻辑将用户请求调度至上游服务器上(upstream server)。nginx在实现反向代理功能时的最重要指令为proxy_pass,它能够将location定义的某URI代理至指定的上游服务器(组)上。如下面的示例中,location的/uri将被替换为上游服务器上的/newuri。
location /uri { proxy_pass http://www.centod.com:8080/newuri; } |
如果location的URI是通过模式匹配定义的,其URI将直接被传递至上游服务器,而不能为其指定转换的另一个URI。例如下面示例中的/forum将被代理为http://www.centod.com/forum。
location ~ ^/forum{
proxy_pass http://www.centod.com;
}
第二个例外是,如果在loation中使用的URL重定向,那么nginx将使用重定向后的URI处理请求,而不再考虑上游服务器上定义的URI。如下面所示的例子中,传送给上游服务器的URI为/index.php?page=<match>,而不是/index。
location / {
rewrite /(.*)$ /index.php?page=$1 break;
proxy_pass http://localhost:8080/index;
}
proxy模块的指令
proxy模块的可用配置指令非常多,它们分别用于定义proxy模块工作时的诸多属性,如连接超时时长、代理时使用http协议版本等。下面对常用的指令做一个简单说明。
proxy_connect_timeout:nginx将一个请求发送至upstream server之前等待的最大时长;
proxy_cookie_domain:将upstream server通过Set-Cookie首部设定的domain属性修改为指定的值,其值可以为一个字符串、正则表达式的模式或一个引用的变量;
proxy_cookie_path: 将upstream server通过Set-Cookie首部设定的path属性修改为指定的值,其值可以为一个字符串、正则表达式的模式或一个引用的变量;
proxy_hide_header:设定发送给客户端的报文中需要隐藏的首部;
proxy_pass:指定将请求代理至upstream server的URL路径;
proxy_set_header:将发送至upsream server的报文的某首部进行重写;
proxy_redirect:重写location并刷新从upstream server收到的报文的首部;
proxy_send_timeout:在连接断开之前两次发送至upstream server的写操作的最大间隔时长;
proxy_read_timeout:在连接断开之前两次从接收upstream server接收读操作的最大间隔时长
标签:blank target border style title
原文地址:http://fengshi.blog.51cto.com/8914310/1557290