Nginx负载均衡与反向代理

Nginx配置文件

更详细可查看Nginx配置文件(nginx.conf)配置详解

****************全局块start****************************
#user  nobody;                       #配置运行Nginx服务器用户(组)
worker_processes  1;                 #制定了Nginx要开启的进程数。每个Nginx进程平均耗费10M~12M内存。建议指定和CPU的数量一致即可

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;    

#pid        logs/nginx.pid;          #Nginx进程PID存放路径
****************全局块end******************************

****************events块start****************************
#设定Nginx的工作模式及连接数上限
events {
    worker_connections  1024;
}
****************events块end******************************

****************http块start******************************
http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;
    #server 块是对虚拟主机的配置
    server {
        listen       80;
        server_name  192.168.74.129;
        #一个server 块可以配置多个location
        location / {
            root   html;
			proxy_pass  http://127.0.0.1:8080
            index  index.html index.htm;
        }
    }
}
****************http块end******************************

Nginx反向代理

反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。

Nginx负载均衡与反向代理_第1张图片

实现步骤

  1. 修改window端hosts文件,配置域名映射ip地址,路径为C:\Windows\System32\drivers\etc\hosts
192.168.74.129 www.123.com
  1. 启动Tomcat
  2. 对nginx.conf做以下配置
    Nginx负载均衡与反向代理_第2张图片
  3. 启动nginx,浏览器访问http://www.123.com/即可访问到tomcat
    Nginx负载均衡与反向代理_第3张图片

根据访问的路径跳转到不同端口的服务

实现效果:
访问 http://192.168.74.129:9001/demo/ 直接跳转到 127.0.0.1:8080
访问 http://192.168.74.129:9001/test/ 直接跳转到 127.0.0.1:8081
具体实现:

  1. 准备两台 tomcat 服务器,一台 8080,一台 8081
  2. 8080 webapps目录下创建demo文件夹,并放入一个a.html文件
  3. 8081 webapps目录下创建test文件夹,并放入一个a.html文件
  4. 启动8080,8081服务器
  5. 配置nginx.conf
    Nginx负载均衡与反向代理_第4张图片
  6. 启动nginx,浏览器访问http://192.168.74.129:9001/test/a.htmlhttp://192.168.74.129:9001/demo/a.html
    Nginx负载均衡与反向代理_第5张图片
    Nginx负载均衡与反向代理_第6张图片

location指令

通过指定模式来与客户端请求的URI相匹配,基本语法如下:location [=||*|^~|@] pattern{……}

  1. 没有修饰符 表示:必须以指定模式开始
    例如location /abc{...}
    那么,如下是对的:
    http://baidu.com/abc
    http://baidu.com/abc?12
    http://baidu.com/abc/
    http://baidu.com/abcde
  2. =表示:必须与指定的模式精确匹配
    例如location = /abc{...}
    那么,如下是对的:
    http://baidu.com/abc
    http://baidu.com/abc?12
    如下是错的:
    http://baidu.com/abc/
    http://baidu.com/abcde
  3. ~ 表示:指定的正则表达式要区分大小写
    例如location ~ ^/abc${...}
    那么,如下是对的:
    http://baidu.com/abc
    http://baidu.com/abc?a=1&b=2
    如下是错的:
    http://baidu.com/ABC
    http://baidu.com/abc/
    http://baidu.com/abcde
  4. ~* 表示:指定的正则表达式不区分大小写
  5. ^~ 类似于无修饰符的行为,也是以指定模式开始,不同的是,如果模式匹配,
  6. @ :定义命名location区段,这些区段客户段不能访问,只可以由内部产生的请
    求来访问,如try_files或error_page等

Nginx负载均衡

实现步骤

实现效果 :
浏览器地址栏输入地址http://192.168.74.129/loadbalance/a.html,负载均衡效果,平均 8080 和 8081 端口中 。
具体实现

  1. 准备两台 tomcat 服务器,一台 8080,一台 8081
  2. 8080 webapps目录下创建loadbalance文件夹,并放入一个a.html文件
  3. 8081 webapps目录下创建loadbalance文件夹,并放入一个a.html文件
  4. 启动8080,8081服务器
  5. 配置nginx.conf
    Nginx负载均衡与反向代理_第7张图片
  6. 启动nginx,浏览器访问http://192.168.74.129/loadbalance/a.html不停刷新可看到8080和8081轮询出现(谷歌浏览器需要点链接刷新)。

Nginx负载均衡策略

  1. 轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。

  2. weight weight 代表权重默认为 1,权重越高被分配的客户端越多

upstream myserver {
server 192.168.74.129:8080 weight=10;
server 192.168.74.129:8081 weight=10;
}
  1. ip_hash 每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器
upstream myserver {
ip_hash;
server 192.168.74.129:8080;
server 192.168.74.129:8081;
}
  1. fair(第三方) 按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream myserver {
server 192.168.74.129:8080;
server 192.168.74.129:8081;
fair;
}

你可能感兴趣的:(Nginx)