当前位置: 首页 > wzjs >正文

备案过的网站换空间公司加盟

备案过的网站换空间,公司加盟,网站首页设计图,自媒体平台注册入口在哪一、 Nginx: 项目网关与流量调度核心原理反向代理 (Reverse Proxy):在Web架构中,Nginx作为系统的统一入口(API网关),接收所有外部客户端请求。它通过解析请求的URL路径(location指令),判断请求的…

一、 Nginx: 项目网关与流量调度

核心原理

  • 反向代理 (Reverse Proxy):

    在Web架构中,Nginx作为系统的统一入口(API网关),接收所有外部客户端请求。它通过解析请求的URL路径(location指令),判断请求的意图,然后将请求路由到正确的内部后端微服务。这些后端服务运行在各自的端口上,不直接对公网暴露。此模式增强了系统的安全性,并为日志、监控、权限等提供了统一的管理层面。

  • 负载均衡 (Load Balancing):

    对于高流量服务,单实例存在性能瓶颈和单点故障风险。负载均衡机制通过upstream指令定义一个由多个相同服务实例组成的服务器集群。当请求被路由到此集群时,Nginx会根据预设策略(如加权轮询)选择一个实例处理请求。这实现了请求压力的分摊,保证了服务的高可用性和水平扩展能力。

Nginx

upstream webservers {server 127.0.0.1:8080 weight=90;#server 127.0.0.1:8088 weight=10;
}server {listen 80;server_name localhost;location /api/ {proxy_pass http://localhost:8080/admin/;}location /user/ {proxy_pass http://webservers/user/;}
}

  1. upstream webservers { ... }

    此代码块定义了一个名为 webservers 的后端服务器集群,用于实现负载均衡。其中server指令定义了集群内的成员。当前配置中,127.0.0.1:8080服务器是主要的工作节点,权重为90,而127.0.0.1:8088服务器则被注释,处于非活动状态。

  2. location /api/ { ... }

    此代码块定义了针对后台管理端请求的路由规则。它匹配所有以/api/开头的URL,并通过proxy_pass指令,将这些请求以反向代理的方式转发给运行在localhost:8080端口的后端管理服务。

  3. location /user/ { ... }

    此代码块定义了针对小程序用户端请求的路由规则。它匹配所有以/user/开头的URL,并通过proxy_pass指令,将请求转发给上面定义的webservers服务器集群。Nginx会自动根据集群内服务器的权重等策略进行负载均衡。


二、 MD5: 密码的安全存储与验证

核心原理

MD5是一种单向哈希函数,能将任意数据转换为一个固定长度且不可逆的“数字指纹”。在用户认证中,其核心价值在于避免在数据库中存储用户的明文密码,以此提升账户安全性。验证过程不比较密码原文,而是比较密码原文经过哈希计算后的“指纹”是否与数据库中预存的“指纹”一致。这依赖于哈希函数的确定性:相同的输入永远产生相同的输出。

代码示例 (EmployeeServiceImpl.java中的login方法)

Java

public Employee login(EmployeeLoginDTO employeeLoginDTO) {String username = employeeLoginDTO.getUsername();String password = employeeLoginDTO.getPassword();Employee employee = employeeMapper.getByUsername(username);if (employee == null) {throw new AccountNotFoundException(MessageConstant.ACCOUNT_NOT_FOUND);}password = DigestUtils.md5DigestAsHex(password.getBytes());if (!password.equals(employee.getPassword())) {throw new PasswordErrorException(MessageConstant.PASSWORD_ERROR);}if (employee.getStatus() == StatusConstant.DISABLE) {throw new AccountLockedException(MessageConstant.ACCOUNT_LOCKED);}return employee;
}

代码解读

  1. 首先,方法从employeeLoginDTO对象中获取用户在登录时提交的明文usernamepassword

  2. 使用employeeMapper.getByUsername(username)从数据库查询用户信息。此时,返回的employee对象中所包含的密码employee.getPassword()是先前在注册时就已经过MD5加密处理的哈希字符串。

  3. password = DigestUtils.md5DigestAsHex(password.getBytes()); 这一行是核心步骤。它调用Spring框架的工具类,将用户本次输入的明文密码也进行相同的MD5哈希计算。

  4. if (!password.equals(employee.getPassword())) 这一行进行最终的验证。它比较的是两个MD5哈希值:一个是刚由用户输入计算得出的,另一个是从数据库中读取的。如果两者不一致,则证明密码错误。

  • 安全提醒: 尽管此方法诠释了哈希验证原理,但因MD5算法本身存在安全弱点,现代项目中更推荐使用BCrypt等加盐慢哈希算法。


三、 Knife4j: API文档的自动化生成与增强UI

核心原理

Knife4j是基于Swagger/OpenAPI规范的API文档UI增强工具。其工作模式为**“后端代码驱动,前端界面渲染”**:

  1. 后端生成数据: 项目中引入的SpringfoxSpringdoc库,会扫描Java Controller代码中的特定注解(如@ApiOperation),并在项目运行时,自动生成一份遵循OpenAPI规范的JSON格式的API结构描述文件。这实现了“代码即文档”,保证了文档与实现的高度一致。

  2. 前端渲染界面: Knife4j本身提供了一套美观且功能强大的前端UI资源。这个UI界面会请求并解析上一步生成的JSON数据,最终将其渲染成一个可交互、带在线调试功能的Web文档页面,极大地提升了API文档的可读性和易用性。

1. 配置API扫描规则 (位于WebMvcConfiguration.java)

代码示例

Java

@Bean
public Docket docket() {ApiInfo apiInfo = new ApiInfoBuilder().title("苍穹外卖项目接口文档").version("2.0").description("苍穹外卖项目接口文档").build();Docket docket = new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo).select().apis(RequestHandlerSelectors.basePackage("com.sky.controller")).paths(PathSelectors.any()).build();return docket;
}

代码解读

  • @Bean方法创建并配置了一个Docket实例,它是Swagger/Springfox的核心配置对象。

  • .apiInfo()用于设置文档首页的标题、版本等元数据。

  • .select()开始进行扫描配置。

  • .apis(RequestHandlerSelectors.basePackage("com.sky.controller"))是关键配置,它指示框架只扫描com.sky.controller这个包下的所有Controller类来生成文档。

  • .paths(PathSelectors.any())表示对扫描到的Controller中的所有接口路径都生成文档。

2. 配置UI界面的访问路径 (位于WebMvcConfiguration.java)

代码示例

Java

@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}

代码解读

  • 此方法用于设置静态资源映射

  • 它告诉Spring MVC框架,当浏览器访问/doc.html/webjars/**这些URL时,不要去Controller里寻找处理器,而是应该去Java的classpath下的特定位置(META-INF/resources/)去寻找对应的静态文件(HTML, CSS, JS)。Knife4j的UI界面文件就打包存放在这些路径下。

  • 完成这两步配置后,启动项目并访问http://localhost:8080/doc.html即可看到API文档。

http://www.dtcms.com/wzjs/723239.html

相关文章:

  • 帮做网站制作挣钱建网站问题
  • 网站建设蛋蛋28洛阳市有哪些平台公司
  • 做网站开发 用什么软件为什么外包会是简历污点
  • 大足集团网站建设千阳县住房和城乡建设局网站
  • 建设网站南沙区iis 网站压缩
  • 建设电玩网站四川seo整站优化费用
  • 唐山市城乡建设网站网站的市场如何制作
  • 装修网站横幅怎么做东软实训网站开发
  • 网站空间就是主机吗企业网站 html模板下载
  • 详情页制作网站网页游戏在线玩不用登录
  • 网站建设与网页设计论述题淮北网站建设公司
  • 网站建设怎么加音乐网站开发技术简介
  • 网站实名制查询sql数据库的网站迁移
  • 台州网站优化方案网络营销外包公司
  • 济南房产信息网站官网青岛物流网站建设
  • 手机网站建设的流程商城网站建设第一章
  • 免费制作一个自己的网站帮人做网站要怎么赚钱吗
  • 建立问答类的网站厦门电商培训
  • 58网站为啥做不好店铺详情页设计
  • iis 默认网站 删除炫酷的html5网站
  • 山西做网站费用织梦网站主页地址更改
  • 文章类网站选什么内容西安企业模板网站建设
  • 高端购物网站建设中国万网ceo
  • 随机显示wordpress南昌官网seo收费标准
  • 小鱼儿企业网站管理系统xp系统做网站服务器吗
  • 网上做网站钱被骗了报案有用吗app手机网站
  • 网站建设及维护学习城市建设理论研究网站
  • 城乡建设部官方网站中学加强校园网站内容建设
  • wordpress图片站模板下载网络广告推广营销方案
  • 企业做网站哪家便宜用ps做企业网站分辨率是多少