nginx反向代理
2018-07-10 本文已影响4人
陆_志东
反向代理的优点
1.能够隐藏真正服务器的ip和port,对于用于来说,用户只知道nginx服务器的ip和port
2.能够进行负载均衡,还有业务分离,把不同的业务分到不同的服务器上面,让各个服务器处理相对应的业务
这样的好处就是,负载均衡能够分担相同功能的服务器压力.业务分离能够保证就算另外的业务服务器崩溃了,也不会影响其他的业务
nginx反向代理的配置
第一步.
在你的nginx.conf配置下的http模块 加载你的反向代理的文件 backend.conf 文件
为什么要加载backend.conf文件,因为一般反向代理,代理的地址过多,如果都写到nginx.conf下不美观,所以写到外面的文件里面再导入进来,这和flask和django把工具类和配置文件分离出去是一样的道理
http{
include backend.conf; #记得加分号
}
backend.conf文件内容如下:
upstream aaa{
server 127.0.0.1:5000 max_fails=3;
keepalive 100;
}
upstream bbb{
server 127.0.0.1:5001 max_fails=3;
keepalive 100;
}
upstream ccc{ # upstream 后面的 aaa,bbb,ccc 代表反向代理匹配规则,proxy_pass 后面的路由进行替换的时候就是根据aaa,bbbccc替换的
server 127.0.0.1:5003; # 当有两个server的时候,如果server1挂了,就会去访问server2,相当于替补,server1和server2具有相同的功能.
server 127.0.0.1:5002 backup;
keepalive 50;
}
第二步
在http下的server模块下导入你的路由匹配跳转文件 server.conf
server模块结构
http{
server{
include server.conf;
}
}
server.conf配置如下
location = /test1 { # 当nginx服务器接收到http://nginx_ip:nginx_port/test1 访问的时候 执行下面的逻辑
internal;
proxy_set_header Accept-Encoding "";
proxy_set_header Host "es.qixin.com";
proxy_set_header Connection "";
proxy_http_version 1.1;
proxy_connect_timeout 100;
proxy_send_timeout 100;
proxy_read_timeout 100;
proxy_pass http://aaa/hello/; # 反向代理到 aaa所对应的server上面的hello接口上面
# 配合上面的upstream 替换后的路径就是 http://127.0.0.1:5000/hello/ 这里我上面设置的是本地,生产环境下是你公司的另外一台服务器的ip和端口
}