nginx反向代理模块
nginx的反向代理模块有很多种配置,下面介绍一些常用的配置实例:
====================== ====================
1.proxy_pass
语法:
配置块:
详解:此配置项将当前请求反向代理到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负责把http://www.54rd.net/yum/Server/开头的url反向代理到后端的http://192.168.1.1/Server/上。
对于有完整的路径,如http://www.54rd.net/yum/Server/的代理没有问题,Server对应后台服务器的一个目录。
但当访问 http://www.54rd.net/yum/Server时,后端Nginx会发送一个301到/上,于是返回到前端后URL变成了 http://www.54rd.net/Server/,这个url显然不是我们想要的。
在Apache中有个ProxyPassReverse的参数,用来调整反向代理服务器发送的http应答头的url,可以解决这个问题。
查了Nginx的手册后,终于发现了proxy_redirect这个参数,它实现的功能和ProxyPassReverse类似,例如增加如下配置:
view plain print ?
这样,当访问http://www.54rd.net/yum/Server后,就会301到http://www.54rd.net/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的反向代理使用起来还是很方便的,适当的修改配置即可。
原文地址:https://my.oschina.net/u/1038053/blog/619993
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
