nginx的反向代理模块有很多种配置,下面介绍一些常用的配置实例: 1.proxy_pass语法: proxy_pass URL 配置块: location,if 详解:此配置项将当前请求反向代理到URL参数指定的服务器上,URL可以是主机名或者IP地址加端口的形式。例如:
view plain print ?
默认情况下反向代理是不会转发请求中的Host头部。如果需要转发,那么必须加上set_header配置:
view plain print ?
2.proxy_method语法:proxy_method method; 配置块:http,server,location 详解:此配置项表示转发时的协议方法名,例如:
view plain print ?
3.proxy_hide_header语法:proxy_hide_header the_header; 配置块:http,server,location 详解:nginx会将上游服务器的响应转发给客户端,但默认不会转发以下HTTP头部字段:Date,Server,X-Pad和X-Accel-*。使用proxy_hide_header后可以任意指定哪些HTTP头部字段不能被转发。例如:
view plain print ?
4.proxy_pass_header语法:proxy_pass_header the_header; 配置块:http,server,location 详解:于proxy_hide_header功能相反,proxy_pass_header会将原来禁止转发的header设置成允许转发。例如:
view plain print ?
5.proxy_pass_request_body语法:proxy_pass_request_body on|off; 默认:proxy_pass_request_body on; 配置块:http,server,location 详解:作用为确定是否向上游服务器发送HTTP包体部分。 6.proxy_pass_request_headers语法:proxy_pass_request_headers on|off; 默认:proxy_pass_request_headers on; 配置块:http,server,location 详解:作用为确定是否转发HTTP头部。 7.proxy_redirect语法:proxy_redirect [default|off|redirect replacement]; 默认:proxy_redirect default; 配置块:http,server,location 详解:当上游服务器返回的响应时重定向或者刷新请求(如HTTP响应码是302或者301)时,proxy_redirect可以重设HTTP头部的location或refresh字段,例如:
view plain print ?
======================
在使用nginx的反向代理功能时,有时会出现重定向的url不是我想要的url,例如下面的例子:前端的Nginx负责把http: www 54rd net yum Server 开头的url反向代理到后端的http: 192 168 1 1 Server 上。对于有完整
在使用nginx的反向代理功能时,有时会出现重定向的url不是我想要的url,例如下面的例子:
前端的Nginx负责把http://www.it.net.cn/yum/Server/开头的url反向代理到后端的http://192.168.1.1/Server/上。 对于有完整的路径,如http://www.it.net.cn/yum/Server/的代理没有问题,Server对应后台服务器的一个目录。
但当访问 http://www.it.net.cn/yum/Server时,后端Nginx会发送一个301到/上,于是返回到前端后URL变成了 http://www.it.net.cn/Server/,这个url显然不是我们想要的。
在Apache中有个ProxyPassReverse的参数,用来调整反向代理服务器发送的http应答头的url,可以解决这个问题。 查了Nginx的手册后,终于发现了proxy_redirect这个参数,它实现的功能和ProxyPassReverse类似,例如增加如下配置:
view plain print ?
这样,当访问http://www.it.net.cn/yum/Server后,就会301到http://www.it.net.cn/yum/Server/上了。
====================
8.proxy_next_upstream语法:proxy_next_upstream [error|timeout|invalid_header|http_500|http_502|http_503|http_504|http_404|off]; 默认:proxy_next_upstream error timeout; 配置块:http,server,location 详解:此配置项表示当向一台上游服务器转发请求出现错误时,继续换一台上游服务器处理这个请求,这样可以更好的保证客户端只收到来自一个上游服务器的应答。proxy_next_upstream的参数用来说明在哪些情况下会继续选择下一台上游服务器转发请求:
小结:nginx的反向代理使用起来还是很方便的,适当的修改配置即可。 (责任编辑:IT) |