nginx实例配置:反向代理、负载均衡、动静分离

1 配置反向代理

1.1 基本反向代理

  1. 首先开启tomcat,确保能够访问localhost:8080
    请添加图片描述

  2. 开启nginx,确保能够访问localhost:80
    请添加图片描述

  3. 修改nginx配置文件nginx.conf,在默认的server中的location中添加proxy_pass

    server {
            listen       80;
            server_name  localhost;
    
            location / {
            	# 当访问80端口时,会反向代理到8080端口
    			proxy_pass http://127.0.0.1:8080;
            }
    }
    

    修改nginx.conf后,重新加载nginx配置,然后再次在浏览器中输入localhost:80时,会出现tomcat页面
    请添加图片描述

1.2 不同的url跳转不同的tomcat

1.2.1 启动两台tomcat

tomcat默认的端口为8080,所以在启动第二个tomcat前,需要修改server.xml中的端口配置

<!--对于默认的server.xml, 修改下面三处的port-->
<!--如果之前已经有修改过server.xml,需要进行的适配修改-->
<Server port="8015" shutdown="SHUTDOWN">

<!--此port为tomcat启动时的端口-->
<Connector port="8081" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    
<Connector port="8019" protocol="AJP/1.3" redirectPort="8443" />

修改完后,能够访问127.0.0.1:8080和127.0.0.1:8081,同时便于后续验证观察,分别在两个tomcat中添加文件,路径如下

http://127.0.0.1:8080/edu/a.html,文件内容如下图所示
请添加图片描述

http://127.0.0.1:8081/vod/a.html,文件内容如下图所示
请添加图片描述

1.2.2 修改nginx.conf

修改server块配置如下

server {
    listen       80;
    server_name  localhost;

	# 如果url中有 /edu/,就转到8080端口
    location ~ /edu/ {
    	proxy_pass http://127.0.0.1:8080;
    }

	# 如果url中有 /vod/,就转到8081端口
    location ~ /vod/ {
    	proxy_pass http://127.0.0.1:8081;
    }
}

然后reload nginx

1.2.3 验证结果

此时访问http://localhost/edu/a.html,能够加载如下界面
请添加图片描述

此时访问http://localhost/vod/a.html,能够加载如下界面
请添加图片描述

2 配置负载均衡

2.1 准备工作

先将反向代理中配置的location配置删除,防止对此阶段产生影响

在两个tomcat中,放置url相同的资源

此时,访问http://127.0.0.1:8081/edu/a.html,能够看到
请添加图片描述

此时,访问http://127.0.0.1:8081/edu/a.html,能够看到
请添加图片描述

2.2 修改nginx.conf

在http块中添加upstream块,并修改server块

upstream myserver {
    server 127.0.0.1:8080;
    server 127.0.0.1:8081;
}

server {
    listen       80;
    server_name  localhost;

    location / {
    	proxy_pass http://myserver;
 	}
}

2.3 验证结果

由于浏览器缓存问题,建议使用chrome的隐身模式进行验证

此时,访问http://localhost/edu/a.html,并不断刷新,能够看到8080和8081被平均访问
请添加图片描述

2.4 nginx分配策略

  1. 轮询(默认)
  2. 权重weight:默认为1,越高就分配的越多
  3. ip_hash:按ip的hash结果分配,这样每个访客固定访问一个后端server,可解决session问题
  4. fair:按server响应时间分配请求,响应时间短优先分配

3 动静分离

3.1 准备工作

在本地硬盘中准备两个静态文件

F:\data\www\a.html
F:\data\image\1.PNG

3.2 修改nginx.conf

修改server块内容如下

server {
        listen       80;
        server_name  localhost;

		# 当请求url中有www时,就会去F:\data\www下查询对应的静态文件
        location /www/ {
			root F:\data;
        }
		
		location /image/ {
			root F:\data;
        }
}

3.3 验证结果

当请求http://localhost/www/a.html时,能够加载文件
请添加图片描述

当请求http://localhost/image/1.PNG时,能够加载图片
请添加图片描述

4 nginx原理

  1. nginx启动之后,会有1个master进程和1到多个worker进程,master得到任务之后,将任务给worker
  2. worker之间使用”争抢“机制获得任务,获得任务之后,连接tomcat进行后续操作
  3. 一个master和多个worker的优点
    1. 可使用nginx -s reload进行热部署
    2. worker之间是独立的进程,如果一个worker出现问题,不影响其它worker,避免服务中断
  4. worker数量和cpu数相等最为适宜
  5. worker_connection
    1. 一个请求,worker可能占用2个连接(静态资源)或4个连接(动态资源)
    2. 静态资源访问最大并发数:worker_connection * worker_processes / 2
    3. 动态资源访问最大并发数:worker_connection * worker_processes / 4

参考:

https://www.bilibili.com/video/BV1zJ411w7SV?p=14&spm_id_from=pageDriver

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值