nginx基本概念和操作

@TOC

1/Nginx

基本概念

Nginx内置负载策略

  1. 轮循(默认):nginx根据请求次数,将每个请求均匀分配到每台服务器
  2. 最少连接:将请求分配给连接数最少的服务器,nginx会统计哪些服务器的连接数最少
  3. IP Hash:绑定处理请求的服务器,第一次请求时,根据该客户端的IP算出一个hash值,将请求分配到集群中的某台服务器上,后面该客户端的所有请求,都会根据hash算法找到之前处理这台客户端的服务器,然后将请求交给她来处理

windows安装

下载地址

start nginx
nginx -s stop
nginx -s quit
nginx -s reload

nginx配置

打开nginx.conf文件
在这里插入图片描述
设置集群:会按照顺序访问集群
在这里插入图片描述
在这里插入图片描述

2/操作

写几个springboot项目,查看集群处理效果

创建springboot项目

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
此时可以换下工作空间
在这里插入图片描述
变颜色说明项目加载好
在这里插入图片描述
可以先删除test里自动生成的类
在这里插入图片描述
修改文件后缀
在这里插入图片描述
在这里插入图片描述
修改pom文件在这里插入图片描述
创建子项目
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
同上创建类似3个子项目test1/test2/test3
并且每个项目都在Java下创建一个文件夹com,否则下面的资源文件夹不会变色,且自己去改变文件夹的类型会报错
在这里插入图片描述

然后把启动类复制到com下面
在这里插入图片描述
配置文件也可以复制进入
此时就可以删掉父项目,因为父项目是作为jar包的引用,删掉src
在这里插入图片描述
你会发现删掉父项目后就没有报错了
在这里插入图片描述
在pom文件中添加<packaging>pom</packaging>表明父项目是以pom格式出现
在这里插入图片描述
但是你发现原本的pom文件已经有了,就不用自己写了
在这里插入图片描述

修改子项目的端口,其它几个子项目同下。端口号改为8180/8280/8380
在这里插入图片描述
为了方便启动的时候区分,可以修改项目启动类名
在这里插入图片描述
以上基本结果完成,可以启动三台不同端口的服务器
接下来完成control的编写

新建controller类
在这里插入图片描述
加上类注解@controller
在这里插入图片描述
由于主项目是不需要依赖的,所以可以删掉
在这里插入图片描述
在子项目的pom文件里都加上依赖

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

<!--        引入一个springboot web依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

    </dependencies>

在这里插入图片描述
在子项目1的controller类里添加

package com.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class TestController {
    
    @RequestMapping("1")
    @ResponseBody
    public  String first(){
        return"test1 first";
    }
}

其余的子项目都添加上

package com.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class TestController {

    @RequestMapping("1")
    @ResponseBody
    public  String first(){
        return"test2 first";
    }
}
package com.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class TestController {

   @RequestMapping("1")
   @ResponseBody
    public  String first(){
        return"test3 first";
    }
}

通过返回的语句的不同判断是哪一个

启动几个服务器
在这里插入图片描述
在这里插入图片描述
依次启动3个

从浏览器单独去访问,然后使用负载均衡

http://localhost:8180/1

在这里插入图片描述
在这里插入图片描述
但是现在希望不用分别访问,只需要轮着来即可

前面我们在Nginx的配置文件配置了一个test的集群
在这里插入图片描述
在localhost上访问/one将统统访问到test的集群上(有时候为了避免冲突,不要取名test)
在这里插入图片描述
进入Nginx的命令(启动)
进入Nginx的文件夹,直接进入命令行
在这里插入图片描述
启动命令start nginx
在这里插入图片描述
然后访问localhost/one/1,如果访问失败,可以访问localhost查看报错信息
在这里插入图片描述
这表示已经启动了nginx,但是访问失败了

刷新就会按照顺序访问
在这里插入图片描述

如果不断有请求进来,它就会负载均衡

在这里插入图片描述

总结
所以集群的意思就是:在同一个路径,但是输出了不同的状态,主要还是需要通过不同的内容类区分,但是实际应用上能做的事情是一致的

测试:
可以用软件postman去访问路径
在这里插入图片描述

其它

如果项目太慢,就把setting改一下
在这里插入图片描述

3/关于端口转发的问题

在这里插入图片描述
在http"//user0后面加了斜杆,在转发完后就会去掉user0
不加,转发后还是user0/

所以如果加上斜杠

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值