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

网站欢迎屏怎么做写作网站水平哪个最好

网站欢迎屏怎么做,写作网站水平哪个最好,信息化建设办公室网站,中国室内设计者联盟官网核心部分#xff1a;routes(路由)#xff0c; predicates(断言)#xff0c;filters(过滤器) id#xff1a;可以理解为是这组配置的一个id值#xff0c;请保证他的唯一的#xff0c;可以设置为和服务名一致 uri#xff1a;可以理解为是通过条件匹配之后需要路由到…核心部分routes(路由) predicates(断言)filters(过滤器) id可以理解为是这组配置的一个id值请保证他的唯一的可以设置为和服务名一致 uri可以理解为是通过条件匹配之后需要路由到跳转重定向到的新的服务地址 predicates可以理解为是编写条件满足条件才进行uri filters可以理解为是在路由前对请求的地址进行额外的其他操作例如拼接或者裁减等 pom依赖 dependencygroupIdorg.springframework.cloud/groupIdartifactIdspring-cloud-starter-gateway/artifactId/dependencydependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-nacos-discovery/artifactId/dependencyyml配置网关 server:port: 8087 spring:application:name: gateway-nacoscloud:gateway:routes: #路由数组[路由 就是指定当请求满足什么条件的时候转到哪个微服务]- id: product_route #当前路由的标识要求唯-uri: http://localhost:8086 #请求要转发到的地址order: 1 #路由的优先级,数字越小级别越高predicates: #断言(就是路由转发要满足的条件)- Path/product-service/** #当请求路径满足Path指定的规则时,才进行路由转发#http://localhost:8087/product-service/product/9 路由器到⬇#http://localhost:8086/product-service/product/9filters: #过滤器,请求在传递过程中可以通过过滤器对其进行一定的修改- StripPrefix1 #转发之前去掉1层路径##http://localhost:8086/product/9 yml注册到nacos配置网关 server:port: 8087 spring:application:name: gateway-nacoscloud:nacos:discovery:server-addr: 192.168.11.47:18848username: nacospassword: nacosgateway:routes: #路由数组[路由 就是指定当请求满足什么条件的时候转到哪个微服务]- id: product_route #当前路由的标识要求唯-uri: lb://product_naocs #lb指的是从nacos中按名称获取微服务并遵循负载均衡策略order: 1 #路由的优先级,数字越小级别越高predicates: #断言(就是路由转发要满足的条件)- Path/product-service/** #当请求路径满足Path指定的规则时,才进行路由转发filters: #过滤器,请求在传递过程中可以通过过滤器对其进行一定的修改- StripPrefix1 #转发之前去掉1层路径, yml配置网关(约定大于配置的方式一般不用这样的配置)例如访问http://localhost:8087/product-service/product/9 中的product-service为服务的名字 server:port: 8087 spring:application:name: gateway-nacoscloud:nacos:discovery:server-addr: 192.168.11.47:18848username: nacospassword: nacosgateway:discovery:locator:enabled: true #是否启动自动识别nacos服务约定大于配置注意若要使用自定义配置则“不能开启注册中心的路由功能”否则自定义的策略会失设置中心路由功能为false server:port: 8087 spring:application:name: gateway-nacoscloud:nacos:discovery:server-addr: 192.168.11.47:18848username: nacospassword: nacosgateway:discovery:locator:enabled: false #是否启动自动识别nacos服务约定大于配置查看网关内置断言官网文档如果用上时间可以设置获取使用方法ZonedDateTime.now()获取 内置断言例子日期2024-01-20T17:42:47都可以访问超过时间访问返回404 server:port: 8087 spring:application:name: gateway-nacoscloud:nacos:discovery:server-addr: 192.168.11.47:18848username: nacospassword: nacosgateway:routes: #路由数组[路由 就是指定当请求满足什么条件的时候转到哪个微服务]- id: product_route #当前路由的标识要求唯-uri: http://localhost:8086 #请求要转发到的地址order: 1 #路由的优先级,数字越小级别越高predicates: #断言(就是路由转发要满足的条件)- Path/product-service/** #当请求路径满足Path指定的规则时,才进行路由转发- Before2024-08-20T17:42:47.789-07:00[America/Denver]filters: #过滤器,请求在传递过程中可以通过过滤器对其进行一定的修改- StripPrefix1 #转发之前去掉1层路径,- id: stock-nacos #当前路由的标识要求唯-uri: http://localhost:8085 #请求要转发到的地址order: 1 #路由的优先级,数字越小级别越高predicates: #断言(就是路由转发要满足的条件)- Path/stock-nacos/** #当请求路径满足Path指定的规则时,才进行路由转发- Before2024-08-20T17:42:47.789-07:00[America/Denver]filters: #过滤器,请求在传递过程中可以通过过滤器对其进行一定的修改- StripPrefix1 #转发之前去掉1层路径, 内部断言的类名是有断言前缀和后缀组成如下 PathRoutePredicateFactory RemoteAddrRoutePredicateFactory RemoteAddrRoutePredicateFactory HeaderRoutePredicateFactory … 基于远程地址的断言工厂 RemoteAddrRoutePredicateFactory:接收一个IP地址段判断请求主机地址是否在地址段中 - RemoteAddr192.168.1.1/24基于Cookie的断言工厂 CookieRoutePredicateFactory:接收两个参数cookie 名字和一个正则表达式。 判断请求cookie是否具有给定名称且值与正则表达式匹配。 - RemoteAddrchocolate, ch.基于Header的断言工厂 HeaderRoutePredicateFactory:接收两个参数标题名称和正则表达式判断请求Header是否具有给定名称且值与正则表达式匹配。 - HeaderX-Request-Id,\d基于Host的断言工 HostRoutePredicateFactory:接收一个参数主机名模式。判断请求的Host是否满足匹配规则 - Host**.testhost.org 基于Method请求方法的基于Method请求方法的断言工厂 MethodRoutePredicateFactory:接收一个参数判断请求类型是否跟指定的类型匹配 - MethodGET基于Path请求路径的断言工厂 PathRoutePredicateFactory:接收一个参数判断请求的URI部分是否满足路径规则。 #多个路径使用逗号,隔开 - Path/foo/{segment}1 , /product/add基于Query请求参数的断言工厂 QueryRoutePredicateFactory:接收两个参数请求param和正则表达式判断请求参数是否具有给定名称且值与正则表达式匹配, - Querybaz ba.基于Path请求路径的断言工厂 自定义路由断言工厂 可以查看路径路由的断言工厂选择AbstractRoutePredicateFactory按CtrlH既可以显示出全部的路由断言工厂可以复制一份修改成自定义的断言工厂 自定义路由断言工厂需要继承 AbstadRoutepredicatefacdoy类重写 ap)y方法的透辑在apy方法中可以通过 excthange.geiequest) 拿到 serneiHpReque 对象从而可以获取到清求的参数、请求方式、请求头等信息 1. 必须spring组件 bean 2. 类必须加上RoutePredicateFactory作为结尾底层的处理的约定大于配置自定会读取到的 3. 必须继承AbstractRoutePredicateFactory 4. 必须声明静态内部类 声明属性来接收 配置文件中对应的断言的信息 5. 需要结合shortcutFieldOrder进行绑定 6. 通过apply进行逻辑判断 true就是匹配成功 false匹配失败 自定义路由断言工厂类 package com.test.gate.config;import org.springframework.cloud.gateway.handler.predicate.AbstractRoutePredicateFactory; import org.springframework.cloud.gateway.handler.predicate.GatewayPredicate; import org.springframework.stereotype.Component; import org.springframework.validation.annotation.Validated; import org.springframework.web.server.ServerWebExchange;import java.util.Arrays; import java.util.List; import java.util.function.Predicate;/*** Description:* Author: xu* Data: 2024-2024/4/11-21* Version: V1.0*/ Component public class CheckAuthRoutePredicateFactory extends AbstractRoutePredicateFactoryCheckAuthRoutePredicateFactory.Config {public CheckAuthRoutePredicateFactory() {super(Config.class);}public ListString shortcutFieldOrder() {return Arrays.asList(param);}public PredicateServerWebExchange apply(final Config config) {return new GatewayPredicate() {public boolean test(ServerWebExchange exchange) {if (config.getParam().equals(zhangSan)) {return true;}return false;}public Object getConfig() {return config;}public String toString() {return String.format(Query: param%s regexp%s, config.getParam());}};}Validatedpublic static class Config {private String param;public Config() {}public String getParam() {return this.param;}public void setParam(String param) {this.param param;}} }yml配置如果一个路由里面有多个断言条件是且的关系都需要满足才跳转uri server:port: 8087 spring:application:name: gateway-nacoscloud:nacos:discovery:server-addr: 192.168.11.47:18848username: nacospassword: nacosgateway: # discovery: # locator: # enabled: true #是否启动自动识别nacos服务约定大于配置routes: #路由数组[路由 就是指定当请求满足什么条件的时候转到哪个微服务]- id: product_route #当前路由的标识要求唯-uri: http://localhost:8086 #请求要转发到的地址order: 1 #路由的优先级,数字越小级别越高predicates: #断言(就是路由转发要满足的条件)- Path/product-service/**,/ddd/s #当请求路径满足Path指定的规则时,才进行路由转发- Before2024-08-20T17:42:47.789-07:00[America/Denver]- CheckAuthzhangSan1filters: #过滤器,请求在传递过程中可以通过过滤器对其进行一定的修改- StripPrefix1 #转发之前去掉1层路径,查看网关各种局部过滤器官网 自定义网关过滤器和自定义断言都全部类似 继承AbstractNameValueGatewavFilterFactory日我们的自定义名称必须要以GatewavFiterFactorv结尾并交给spring管理 package com.test.gate.config;import com.alibaba.nacos.common.utils.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.cloud.gateway.filter.GatewayFilter; import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Component;import java.util.Arrays; import java.util.List;/*** Description:* Author: xu* Data: 2024-2024/4/12-11* Version: V1.0*/ Componentpublic class CheckAuthGatewayFilterFactory extends AbstractGatewayFilterFactoryCheckAuthGatewayFilterFactory.Config {private static Logger log LoggerFactory.getLogger(CheckAuthGatewayFilterFactory.class);public ListString shortcutFieldOrder() {return Arrays.asList(name);}Overridepublic GatewayFilter apply(Config config) {return (exchange, chain) - {log.info(调用checkAuthGatewayFilterFactory config.getName());String name exchange.getRequest().getQueryParams().getFirst(name);if (StringUtils.isNotBlank(name)) {if (config.getName().equals(name)) {chain.filter(exchange);} else {//返回404exchange.getResponse().setStatusCode(HttpStatus.NOT_FOUND);exchange.getResponse().setComplete();}//1 正常请求chain.filter(exchange);}return null;};}public static class Config {private String name;public Config() {}public String getName() {return this.name;}public void setName(String prefix) {this.name name;}} }server:port: 8087 spring:application:name: gateway-nacoscloud:nacos:discovery:server-addr: 192.168.11.47:18848username: nacospassword: nacosgateway: # discovery: # locator: # enabled: true #是否启动自动识别nacos服务约定大于配置routes: #路由数组[路由 就是指定当请求满足什么条件的时候转到哪个微服务]- id: product_route #当前路由的标识要求唯-uri: http://localhost:8086 #请求要转发到的地址order: 1 #路由的优先级,数字越小级别越高predicates: #断言(就是路由转发要满足的条件)- Path/product-service/**,/ddd/s #当请求路径满足Path指定的规则时,才进行路由转发- Before2024-08-20T17:42:47.789-07:00[America/Denver]- CheckAuthzhangSan1filters: #过滤器,请求在传递过程中可以通过过滤器对其进行一定的修改- StripPrefix1 #转发之前去掉1层路径,- CheckAuthlisi全局过滤器(Global Filters)配置 自定义全局过滤器(Global Filters)配置类一般都是实现认证或者授权或者做日记记录不需要在配置文件做任何配置 package com.test.gate.config;import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.cloud.gateway.filter.GatewayFilterChain; import org.springframework.cloud.gateway.filter.GlobalFilter; import org.springframework.stereotype.Component; import org.springframework.web.server.ServerWebExchange; import reactor.core.publisher.Mono;/*** Description:* Author: xu* Data: 2024-2024/4/12-20* Version: V1.0*/ Component public class LogGlobalFilter implements GlobalFilter {private static Logger log LoggerFactory.getLogger(LogGlobalFilter.class);Overridepublic MonoVoid filter(ServerWebExchange exchange, GatewayFilterChain chain) {//做业务处理授权或者日记记录log.info(exchange.getRequest().getPath().value());return chain.filter(exchange);} } 要启用 Reactor Netty 访问日志请设置-Dreactor,netty.http,server.accessLogEnabledtrue它必须是 Java 系统属性而不是 Spring Boot 属性。如果是jar包启动就将网关打包成jar包如下运行 java -jar gateway.jar -Dreactor,netty.http,server.accessLogEnabledtrueidea配置网关日记打印在vm配置 -Dreactor.netty.http.server.accessLogEnabledtrue 将网关日志记录全部输出到日志文件。以下示例创建一个Logback.xml 配置 ?xml version1.0 encodingUTF-8? configuration!-- 控制台输出 --appender nameSTDOUT classch.qos.logback.core.ConsoleAppenderencoderpattern%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n/pattern/encoder/appender!-- 按天滚动的文件输出 --appender nameROLLING_FILE classch.qos.logback.core.rolling.RollingFileAppenderfileG:\temptemptemp\gatewaylog\logfile.log/file !-- 修改为你想要保存日志文件的路径 --rollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicyfileNamePatternG:\temptemptemp\gatewaylog\logfile.%d{yyyy-MM-dd}.log/fileNamePattern !-- 指定按日期滚动的文件名格式 --maxHistory30/maxHistory !-- 保留最多30天的历史日志文件 --/rollingPolicyencoderpattern%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n/pattern/encoder/appender!-- 异步日志输出 --appender nameasync classch.qos.logback.classic.AsyncAppenderappender-ref refROLLING_FILE/ !-- 将异步 appender 链接到文件输出 --/appender!-- 记录器配置 --logger namereactor.netty.http.server.AccessLog levelINFO additivityfalseappender-ref refasync/ !-- 将异步 appender 应用于特定的日志记录器 --appender-ref refSTDOUT/ !-- 控制台输出 --/logger!-- 根日志级别设置 --root levelinfoappender-ref refSTDOUT/ !-- 控制台输出 --appender-ref refROLLING_FILE/ !-- 将按天滚动的文件输出器添加到根输出器中 --/root/configurationGateway跨域配置(CORS Configuration)网关官网跨域配置 方法一yml配置文件配置跨域 spring:cloud:gateway:globalcors:cors-configurations:[/**]: #运行跨域访问的资源allowedOrigins: https://docs.spring.io #跨域允许来源allowedMethods:- GET- POST方法二通过配置类设置跨域注意UrlBasedCorsConfigurationSource 导入的包是import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource package com.test.gate.config;import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.reactive.CorsWebFilter; import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource; import org.springframework.web.util.pattern.PathPatternParser;/*** Description:* Author: xu* Data: 2024-2024/4/12-22* Version: V1.0*/ Configuration public class CorsConfig {Beanpublic CorsWebFilter corsFilter() {CorsConfiguration config new CorsConfiguration();config.addAllowedMethod(*);config.addAllowedOrigin(*);config.addAllowedHeader(*);UrlBasedCorsConfigurationSource source new UrlBasedCorsConfigurationSource(new PathPatternParser());source.registerCorsConfiguration(/**, config);return new CorsWebFilter(source);} }网关限流整合sentinel官网 pom.xml添加依赖整合sentinel和官网配置的有以下不一样是因为spring-cloud-alibaba-sentinel-gateway这个依赖比adapter依赖多了SentinelSCGAutoConfiguration自定注入例如很多需要的bean !--sentinel整台gateway 以前版本使用adapter-- dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-alibaba-sentinel-gateway/artifactId /dependency !--sentinel的依赖-- dependencygroupIdcom.alibaba.cloud/groupIdartifactIdspring-cloud-starter-alibaba-sentinel/artifactId /dependency配置文件配置sentinel # 配置sentinelsentinel:transport:dashboard: 127.0.0.1:8858 #sentiel的dashboard地址
http://www.dnsts.com.cn/news/44170.html

相关文章:

  • 上海网站建站模板做代码和网站
  • 个人做电商网站赚钱吗seo入门黑帽培训教程
  • 如何做网站搜索排名沈阳app开发公司哪家好
  • 南京百度推广网站国有平台公司是什么意思
  • 物流网站系统php源码微信公众号如何创建视频链接
  • 深圳市住房建设部网站wordpress视频防止下载文件
  • 网站不收录专业团队的重要性
  • 做外贸网站需要缴什么税html注册登录模板
  • 湛江制作网站多少钱公司门户网站及oa系统建设的请示
  • 教学网站开发背景西安官网seo诊断
  • 广州企业所得税河北seo网站优化公司
  • 建个网站多少钱app贵州省住房和城乡建设厅网站官网
  • 网站建设服务标准深圳罗湖网站制作
  • 做企业福利网站起名怎么做公司网站的二维码
  • 网站开发各小组互评表html5 开发的网站
  • 做设计需要知道的几个网站吗注册一个互联网公司需要多少钱
  • wordpress建站 知乎北京做网站建设的公司有哪些
  • 雅奇小蘑菇做网站好不好用怎么在自己做网站
  • 网站设计风格类型wordpress函数文件夹
  • 企业网站群建设模式wordpress 产品分类侧边栏
  • 北京网站开开发公司大旺建设局网站
  • 淄博的大型网站建设json做网站的数据库
  • 网站开发师贴吧厦门集团网站建设
  • 起个娱乐网站名字科技网站新版网站上线
  • 私人做网站的流程如何做响应式网站设计
  • 建设银行的网站是多少网站设计理念介绍
  • 大连市住房与城乡建设部网站中国最大的编程公司
  • 企业模板建站公司公司网站建设佛山哪家专业
  • 企业做网站的概要wordpress菜单子菜单
  • 福永网站推广河北建筑工程学院招生网官网