1:反向代理
代理就是中介,那有反向代理就有正向代理,两者的区别是什么嘞?
正向代理隐藏真实客户端,服务端不知道实际发起请求的客户端.,proxy和client同属一个LAN,对server透明;
反向代理隐藏真实服务端,客户端不知道实际提供服务的服务端,proxy和server同属一个LAN,对client透明。
基本配置项
(1)proxy_pass
将当前请求反向代理到URL参数指定的服务器上
(2)proxy_method
表示转发时的协议方法名
proxy_method POST; 客户端转发来的GET请求在转发时方法名会改为POST请求
(3)proxy_redirect
当上游服务器返回的响应是重定向或者刷新请求(HTTP响应码是301或者302),可以重设HTTP头部的location或refresh
proxy_redirect http://location:8000/two/ http://location:8000/noe/
(4)proxy_next_upstream
当上游服务器请求出现错误,继续换一台服务器转发请求。
error:在与服务器建立连接,向其传递请求或读取响应标头时发生错误;
timeout:在与服务器建立连接,向其传递请求或读取响应头时发生超时
invalid_header:服务器返回空响应或无效响应;
http_500:服务器返回了带有代码500的响应;
http_502:服务器返回具有代码502的响应;
HTTP_503:服务器返回具有代码503的响应;
http_504:服务器返回具有代码504的响应;
http_403:服务器返回带有代码403的响应;
http_404:服务器返回具有代码404的响应;
off:禁用将请求传递到下一个服务器。
示例:
#当其中一台返回错误码404,500...等错误时,可以分配到下一台服务器程序继续处理,提高平台访问成功率,多可运用于前台程序负载,设置proxy_next_upstream
proxy_next_upstream http_500 | http_502 | http_503 | http_504 |http_404;
#proxy_next_upstream off 关闭向下转发请求
2:负载均衡
负载均衡直接上代码,用Http Proxy module配置一个反向代理服务器。
示例如下:
当server 192.168.1.2:80在30秒内断连3次就进行连接备份服务器。
#upstream模块 #定义一个上游服务器的集群 upstream backend { #在30秒内连接失败次数超过3次 server 192.168.1.2:80 max_fails=3 fail_timeout=30s; #备份服务器 server 192.168.1.8:80 backup; server 192.168.1.9:80 backip weight=5; } #server模块 server { listen 80; location / { proxy_pass http://backend; } }