1.upstream 配置代理
- upstream local_tomcat {
- server localhost:8080;
- }
- server{
- location / {
- proxy_pass http://local_tomcat;
- }
- #......其他省略
- }
在server外添加了一个upstream,而直接在proxy_pass里面直接用http://+upstream的名称来使用。
还是直接来http://localhost,还是和第一个一样的效果,所有链接都没问题,说明我们配置正确。
upstream中的server元素必须要注意,不能加http://,但proxy_pass中必须加
2.upstream 配置多台服务器
- upstream local_tomcat {
- server localhost:8080;
- server localhost:9999;
- }
防止第一台服务器出现挂机。
3.upstream配置某台服务器的权值
- upstream local_tomcat {
- server localhost:8080 weight=1;
- server localhost:9999 weight=5;
- }
4.nginx的重要功能
动/静态资源分离、负载均衡
5.动/静态资源分离
nginx支持正则表达式以区分静态资源或者动态资源,
其中动态资源可以进一步转发给后端的proxy server,
而静态资源则可以在nginx层面使用本地缓存策略或者重定向(类CDN)到其他nginx上
6.负载均衡
对于动态资源而言,如果有多个proxy server,那么nginx将会根据一定的算法选择合适的server,并转发请求,最终将客户端request相对均衡的分发给多个server。
7.负载均衡算法
“负载均衡”算法需要在upstream区块的首行声明。
1)round-robin:轮询,request将会依次有序的分发给web server。one by one!默认使用此算法。
2)least-connected:最小连接数,请求将会被分发给当前链接数最小的server。配置名“least_conn”。
3)ip-hash:根据请求的客户端IP作为hashing key,来判定选择哪个server。配置名“ip_hash”。
能够影响负载均衡策略的还有一个重要的参数:权重
8.健康检测
- upstream backend {
- server 192.168.1.110 weight=3 max_fails=3 fail_timeout=10s;
- server 192.168.1.120;
- server 192.168.1.130;
- }
对于负载均衡是必须的,这是提供可用性、“故障迁移”的必要手段。比如当某个server失效,请求未能正常处理,那么我们应该将分发给那些“正常”的server,并将故障的server从列表中移除,直到它恢复,以避免后续更多的请求处理失败。nginx当与一个server建立链接失败后,会在“fail_timeout”时间内最多尝试“max_fails”次,如果仍为失败,则将次server标记为“failed”,并从服务列表中移除。默认“max_fails”为1,如果“max_fails”为0,则表示关闭“健康检测”;“fail_timeout”(默认位10s)表示检测多久后被标记为“failed”,nginx会以优雅的方式检测那些失效的server,如果它们再次上线,则将它们标记为“alive”,即可继续提供服务。