delete:
This commit is contained in:
parent
9bab576c5c
commit
13db8a2600
|
|
@ -1,119 +0,0 @@
|
||||||
clone:
|
|
||||||
image: registry.t-aaron.com/drone/git:latest
|
|
||||||
|
|
||||||
kind: pipeline
|
|
||||||
type: kubernetes
|
|
||||||
name: gateway
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
- name: maven-cache
|
|
||||||
host:
|
|
||||||
path: /opt/maven-cache-default
|
|
||||||
- name: sonar-cache
|
|
||||||
host:
|
|
||||||
path: /opt/sonar-cache-default
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: download-dependencies
|
|
||||||
image: registry.t-aaron.com/maven:3.8.6-openjdk-11-slim
|
|
||||||
volumes:
|
|
||||||
- name: maven-cache
|
|
||||||
path: /root/.m2
|
|
||||||
commands:
|
|
||||||
- echo "配置 Maven 镜像源..."
|
|
||||||
- mkdir -p /root/.m2
|
|
||||||
- cp settings.xml /root/.m2/settings.xml
|
|
||||||
- echo "开始下载 Maven 依赖..."
|
|
||||||
- mvn dependency:go-offline -B
|
|
||||||
- echo "依赖下载完成!"
|
|
||||||
- echo "将本地 Maven 缓存同步到工作区用于后续构建..."
|
|
||||||
- mkdir -p /drone/src/.m2
|
|
||||||
- cp -a /root/.m2/. /drone/src/.m2/
|
|
||||||
|
|
||||||
- name: package
|
|
||||||
image: registry.t-aaron.com/maven:3.8.6-openjdk-11-slim
|
|
||||||
volumes:
|
|
||||||
- name: maven-cache
|
|
||||||
path: /root/.m2
|
|
||||||
commands:
|
|
||||||
- echo "配置 Maven 镜像源..."
|
|
||||||
- mkdir -p /root/.m2
|
|
||||||
- cp settings.xml /root/.m2/settings.xml
|
|
||||||
- echo "开始构建 JAR 包..."
|
|
||||||
- mvn clean package -DskipTests -B
|
|
||||||
- echo "JAR 包构建完成!"
|
|
||||||
- ls -la target/*.jar
|
|
||||||
when:
|
|
||||||
event: [ push, pull_request ]
|
|
||||||
depends_on:
|
|
||||||
- download-dependencies
|
|
||||||
|
|
||||||
- name: sonar-scan
|
|
||||||
image: registry.t-aaron.com/maven:3.8.6-openjdk-11-slim
|
|
||||||
volumes:
|
|
||||||
- name: maven-cache
|
|
||||||
path: /root/.m2
|
|
||||||
- name: sonar-cache
|
|
||||||
path: /root/.sonar/cache
|
|
||||||
commands:
|
|
||||||
- echo "配置 Maven 镜像源..."
|
|
||||||
- mkdir -p /root/.m2
|
|
||||||
- cp settings.xml /root/.m2/settings.xml
|
|
||||||
- echo "开始 SonarQube 代码质量检查..."
|
|
||||||
- echo "清理之前的构建文件..."
|
|
||||||
- rm -rf target/ .mvn/ .classpath .project .settings/
|
|
||||||
- echo "编译代码..."
|
|
||||||
- mvn clean compile
|
|
||||||
- echo "执行 SonarQube 扫描..."
|
|
||||||
- mvn sonar:sonar -Dsonar.projectKey=gateway -Dsonar.host.url=https://sonar-ops.t-aaron.com/sonar -Dsonar.login=$SONAR_TOKEN -Dsonar.projectName="Gateway" -Dsonar.projectVersion=${DRONE_COMMIT_SHA:0:8} -Dsonar.sources=src/main/java -Dsonar.java.binaries=target/classes
|
|
||||||
- echo "SonarQube 代码质量检查完成!"
|
|
||||||
environment:
|
|
||||||
SONAR_TOKEN:
|
|
||||||
from_secret: SONAR_TOKEN
|
|
||||||
when:
|
|
||||||
event: [ push, pull_request ]
|
|
||||||
depends_on:
|
|
||||||
- download-dependencies
|
|
||||||
|
|
||||||
- name: build-and-push
|
|
||||||
image: registry.t-aaron.com/plugins/kaniko
|
|
||||||
settings:
|
|
||||||
registry: registry.t-aaron.com
|
|
||||||
repo: registry.t-aaron.com/tuoheng/gateway
|
|
||||||
cache: true
|
|
||||||
cache_repo: registry.t-aaron.com/kaniko/cache-gateway
|
|
||||||
build_args:
|
|
||||||
- MAVEN_MIRROR_URL=https://maven.aliyun.com/repository/public
|
|
||||||
username:
|
|
||||||
from_secret: REGISTRY_USERNAME
|
|
||||||
password:
|
|
||||||
from_secret: REGISTRY_PASSWORD
|
|
||||||
tags:
|
|
||||||
- latest
|
|
||||||
- ${DRONE_COMMIT_SHA:0:8}
|
|
||||||
dockerfile: Dockerfile
|
|
||||||
context: .
|
|
||||||
when:
|
|
||||||
event: [ push, tag ]
|
|
||||||
depends_on:
|
|
||||||
- package
|
|
||||||
|
|
||||||
- name: deploy-to-k8s
|
|
||||||
image: registry.t-aaron.com/alpine/k8s:1.25.9
|
|
||||||
commands:
|
|
||||||
- echo "部署/更新 gateway 到 default 命名空间"
|
|
||||||
- |
|
|
||||||
kubectl create deployment gateway \
|
|
||||||
--image=registry.t-aaron.com/tuoheng/gateway:${DRONE_COMMIT_SHA:0:8} \
|
|
||||||
--port=8080 -n default --dry-run=client -o yaml | kubectl apply -f -
|
|
||||||
- kubectl set image deployment/gateway gateway=registry.t-aaron.com/tuoheng/gateway:${DRONE_COMMIT_SHA:0:8} -n default --record=true || true
|
|
||||||
- kubectl create service clusterip gateway --tcp=8080:8080 -n default --dry-run=client -o yaml | kubectl apply -f -
|
|
||||||
- echo "等待 Deployment 就绪..."
|
|
||||||
- kubectl rollout status deployment/gateway -n default --timeout=300s
|
|
||||||
- echo "查看服务与Pod状态"
|
|
||||||
- kubectl get deploy,svc -n default | grep -i gateway || true
|
|
||||||
- kubectl get pods -n default -l app=gateway || kubectl get pods -n default | grep gateway || true
|
|
||||||
when:
|
|
||||||
event: [ push ]
|
|
||||||
depends_on:
|
|
||||||
- build-and-push
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
target/
|
|
||||||
|
|
@ -1,27 +0,0 @@
|
||||||
# 生产阶段 - 仅复制预构建的 JAR 文件
|
|
||||||
FROM registry.t-aaron.com/openjdk:11-jre-slim
|
|
||||||
|
|
||||||
# 创建应用用户
|
|
||||||
RUN groupadd -r appuser && useradd -r -g appuser appuser
|
|
||||||
|
|
||||||
# 设置工作目录
|
|
||||||
WORKDIR /app
|
|
||||||
|
|
||||||
# 复制预构建的 JAR 文件
|
|
||||||
COPY target/*.jar app.jar
|
|
||||||
|
|
||||||
# 更改文件所有者
|
|
||||||
RUN chown -R appuser:appuser /app
|
|
||||||
|
|
||||||
# 切换到应用用户
|
|
||||||
USER appuser
|
|
||||||
|
|
||||||
# 暴露端口
|
|
||||||
EXPOSE 8080
|
|
||||||
|
|
||||||
# 健康检查
|
|
||||||
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
|
|
||||||
CMD netstat -an | grep :8080 | grep LISTEN || exit 1
|
|
||||||
|
|
||||||
# 启动应用
|
|
||||||
ENTRYPOINT ["java", "-jar", "app.jar"]
|
|
||||||
|
|
@ -1,48 +0,0 @@
|
||||||
# Test pipeline trigger
|
|
||||||
# Test pipeline with secrets permission
|
|
||||||
# Test with image mirroring
|
|
||||||
# Test with local images - drone/git and drone/placeholder
|
|
||||||
# Test with updated RBAC permissions
|
|
||||||
# Test with uploaded alpine image
|
|
||||||
# Test host volume mount
|
|
||||||
# Test host volume mount again
|
|
||||||
# Test after server config update
|
|
||||||
# Test with emptyDir volume
|
|
||||||
Trigger new build
|
|
||||||
Trigger Kaniko build
|
|
||||||
Retrigger build with correct image
|
|
||||||
Trigger build test
|
|
||||||
Test build
|
|
||||||
Test registry mirror
|
|
||||||
xx
|
|
||||||
xx
|
|
||||||
xx
|
|
||||||
xx
|
|
||||||
xx
|
|
||||||
xx
|
|
||||||
xx
|
|
||||||
xx
|
|
||||||
xx
|
|
||||||
xx
|
|
||||||
xx
|
|
||||||
xx
|
|
||||||
xx
|
|
||||||
xx
|
|
||||||
xx
|
|
||||||
xx
|
|
||||||
xx
|
|
||||||
xx
|
|
||||||
xx
|
|
||||||
xx
|
|
||||||
xx
|
|
||||||
xx
|
|
||||||
xx
|
|
||||||
xx
|
|
||||||
xx
|
|
||||||
xx
|
|
||||||
a
|
|
||||||
a
|
|
||||||
a
|
|
||||||
xx
|
|
||||||
xx
|
|
||||||
xx
|
|
||||||
122
gateway/pom.xml
122
gateway/pom.xml
|
|
@ -1,122 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
|
|
||||||
<modelVersion>4.0.0</modelVersion>
|
|
||||||
<parent>
|
|
||||||
<groupId>org.springframework.boot</groupId>
|
|
||||||
<artifactId>spring-boot-starter-parent</artifactId>
|
|
||||||
<version>2.7.18</version>
|
|
||||||
<relativePath/> <!-- lookup parent from repository -->
|
|
||||||
</parent>
|
|
||||||
<groupId>com.tuoheng</groupId>
|
|
||||||
<artifactId>gateway</artifactId>
|
|
||||||
<version>0.0.1-SNAPSHOT</version>
|
|
||||||
<name>gateway</name>
|
|
||||||
<description>Spring Boot 2.7.x Servlet Gateway</description>
|
|
||||||
<properties>
|
|
||||||
<java.version>11</java.version>
|
|
||||||
<spring-cloud.version>2021.0.8</spring-cloud.version>
|
|
||||||
</properties>
|
|
||||||
<dependencies>
|
|
||||||
<!-- Spring MVC -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework.boot</groupId>
|
|
||||||
<artifactId>spring-boot-starter-webflux</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<!-- Spring Cloud Gateway (Servlet/MVC模式) -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework.cloud</groupId>
|
|
||||||
<artifactId>spring-cloud-starter-gateway</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<!-- OAuth2 Resource Server (JWT校验) -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework.boot</groupId>
|
|
||||||
<artifactId>spring-boot-starter-oauth2-resource-server</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<!-- OAuth2 Client (TokenRelay等) -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework.boot</groupId>
|
|
||||||
<artifactId>spring-boot-starter-oauth2-client</artifactId>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- Nacos Discovery -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.alibaba.cloud</groupId>
|
|
||||||
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
|
|
||||||
<version>2021.0.5.0</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- Nacos Config -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.alibaba.cloud</groupId>
|
|
||||||
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
|
|
||||||
<version>2021.0.5.0</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- Spring Cloud Bootstrap -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework.cloud</groupId>
|
|
||||||
<artifactId>spring-cloud-starter-bootstrap</artifactId>
|
|
||||||
<version>3.1.5</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- Spring Cloud LoadBalancer -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework.cloud</groupId>
|
|
||||||
<artifactId>spring-cloud-starter-loadbalancer</artifactId>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<!-- 测试依赖 -->
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework.boot</groupId>
|
|
||||||
<artifactId>spring-boot-starter-test</artifactId>
|
|
||||||
<scope>test</scope>
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
|
||||||
<dependencyManagement>
|
|
||||||
<dependencies>
|
|
||||||
<dependency>
|
|
||||||
<groupId>org.springframework.cloud</groupId>
|
|
||||||
<artifactId>spring-cloud-dependencies</artifactId>
|
|
||||||
<version>${spring-cloud.version}</version>
|
|
||||||
<type>pom</type>
|
|
||||||
<scope>import</scope>
|
|
||||||
</dependency>
|
|
||||||
</dependencies>
|
|
||||||
</dependencyManagement>
|
|
||||||
<build>
|
|
||||||
<plugins>
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.springframework.boot</groupId>
|
|
||||||
<artifactId>spring-boot-maven-plugin</artifactId>
|
|
||||||
</plugin>
|
|
||||||
<!-- JaCoCo 代码覆盖率插件 -->
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.jacoco</groupId>
|
|
||||||
<artifactId>jacoco-maven-plugin</artifactId>
|
|
||||||
<version>0.8.8</version>
|
|
||||||
<executions>
|
|
||||||
<execution>
|
|
||||||
<goals>
|
|
||||||
<goal>prepare-agent</goal>
|
|
||||||
</goals>
|
|
||||||
</execution>
|
|
||||||
<execution>
|
|
||||||
<id>report</id>
|
|
||||||
<phase>compile</phase>
|
|
||||||
<goals>
|
|
||||||
<goal>report</goal>
|
|
||||||
</goals>
|
|
||||||
</execution>
|
|
||||||
</executions>
|
|
||||||
</plugin>
|
|
||||||
|
|
||||||
<!-- SonarQube 插件 -->
|
|
||||||
<plugin>
|
|
||||||
<groupId>org.sonarsource.scanner.maven</groupId>
|
|
||||||
<artifactId>sonar-maven-plugin</artifactId>
|
|
||||||
<version>3.9.1.2184</version>
|
|
||||||
</plugin>
|
|
||||||
</plugins>
|
|
||||||
</build>
|
|
||||||
</project>
|
|
||||||
|
|
@ -1,14 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
|
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
|
|
||||||
http://maven.apache.org/xsd/settings-1.0.0.xsd">
|
|
||||||
<mirrors>
|
|
||||||
<mirror>
|
|
||||||
<id>aliyun-all</id>
|
|
||||||
<name>Aliyun Maven (all)</name>
|
|
||||||
<url>https://maven.aliyun.com/repository/public</url>
|
|
||||||
<mirrorOf>*</mirrorOf>
|
|
||||||
</mirror>
|
|
||||||
</mirrors>
|
|
||||||
</settings>
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
package com.tuoheng.gateway;
|
|
||||||
|
|
||||||
import org.springframework.boot.SpringApplication;
|
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
|
||||||
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
|
|
||||||
|
|
||||||
@SpringBootApplication
|
|
||||||
@EnableDiscoveryClient
|
|
||||||
public class GatewayApplication {
|
|
||||||
public static void main(String[] args) {
|
|
||||||
SpringApplication.run(GatewayApplication.class, args);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
package com.tuoheng.gateway.config;
|
|
||||||
import org.springframework.context.annotation.Bean;
|
|
||||||
import org.springframework.context.annotation.Configuration;
|
|
||||||
import org.springframework.security.config.annotation.web.reactive.EnableWebFluxSecurity;
|
|
||||||
import org.springframework.security.config.web.server.ServerHttpSecurity;
|
|
||||||
import org.springframework.security.web.server.SecurityWebFilterChain;
|
|
||||||
|
|
||||||
@Configuration
|
|
||||||
@EnableWebFluxSecurity
|
|
||||||
public class SecurityConfig {
|
|
||||||
@Bean
|
|
||||||
public SecurityWebFilterChain securityWebFilterChain(ServerHttpSecurity http) {
|
|
||||||
http
|
|
||||||
.authorizeExchange(exchanges -> exchanges
|
|
||||||
.pathMatchers("/a/**").authenticated()
|
|
||||||
.pathMatchers("/b/**").authenticated()
|
|
||||||
.anyExchange().permitAll()
|
|
||||||
)
|
|
||||||
.oauth2ResourceServer(oauth2 -> oauth2.jwt());
|
|
||||||
return http.build();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,77 +0,0 @@
|
||||||
package com.tuoheng.gateway.filter;
|
|
||||||
import org.springframework.cloud.gateway.filter.GlobalFilter;
|
|
||||||
import org.springframework.core.Ordered;
|
|
||||||
import org.springframework.http.HttpHeaders;
|
|
||||||
import org.springframework.http.server.reactive.ServerHttpRequest;
|
|
||||||
import org.springframework.stereotype.Component;
|
|
||||||
import org.springframework.web.server.ServerWebExchange;
|
|
||||||
import reactor.core.publisher.Mono;
|
|
||||||
import org.springframework.security.oauth2.jwt.Jwt;
|
|
||||||
import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationToken;
|
|
||||||
import org.springframework.security.core.context.ReactiveSecurityContextHolder;
|
|
||||||
|
|
||||||
@Component
|
|
||||||
public class JwtPermissionFilter implements GlobalFilter, Ordered {
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 这边能获取到Token里面的值
|
|
||||||
* @param exchange
|
|
||||||
* @param chain
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public Mono<Void> filter(ServerWebExchange exchange, org.springframework.cloud.gateway.filter.GatewayFilterChain chain) {
|
|
||||||
|
|
||||||
// 获取完整的请求URL
|
|
||||||
String fullUrl = exchange.getRequest().getURI().toString();
|
|
||||||
System.out.println("用户访问的完整URL: " + fullUrl);
|
|
||||||
|
|
||||||
// 获取请求的path
|
|
||||||
String path = exchange.getRequest().getPath().toString();
|
|
||||||
System.out.println("用户访问的path: " + path);
|
|
||||||
|
|
||||||
// 获取请求的host
|
|
||||||
String host = exchange.getRequest().getHeaders().getHost().toString();
|
|
||||||
System.out.println("用户访问的host: " + host);
|
|
||||||
|
|
||||||
String hostName = exchange.getRequest().getHeaders().getHost().getHostName();
|
|
||||||
System.out.println("用户访问的域名: " + hostName);
|
|
||||||
|
|
||||||
// 获取Referer(如果有)
|
|
||||||
String referer = exchange.getRequest().getHeaders().getFirst("Referer");
|
|
||||||
System.out.println("Referer: " + referer);
|
|
||||||
// 从Spring Security上下文获取JWT
|
|
||||||
return ReactiveSecurityContextHolder.getContext()
|
|
||||||
.flatMap(securityContext -> {
|
|
||||||
if (securityContext.getAuthentication() instanceof JwtAuthenticationToken) {
|
|
||||||
JwtAuthenticationToken jwtAuth = (JwtAuthenticationToken) securityContext.getAuthentication();
|
|
||||||
Jwt jwt = jwtAuth.getToken();
|
|
||||||
String username = jwt.getClaimAsString("username");
|
|
||||||
String clientId = jwt.getClaimAsString("client_id");
|
|
||||||
String tenantCode = jwt.getClaimAsString("tenant_code");
|
|
||||||
String authorities = jwt.getClaimAsString("clientIds");
|
|
||||||
|
|
||||||
// 你可以在这里做权限判断
|
|
||||||
System.out.println("网关解析到token字段:");
|
|
||||||
System.out.println("用户名: " + username);
|
|
||||||
System.out.println("客户端ID: " + clientId);
|
|
||||||
System.out.println("租户代码: " + tenantCode);
|
|
||||||
System.out.println("用户权限: " + authorities);
|
|
||||||
|
|
||||||
//该域名没有权限
|
|
||||||
if(!authorities.contains(hostName)){
|
|
||||||
exchange.getResponse().setStatusCode(org.springframework.http.HttpStatus.FORBIDDEN);
|
|
||||||
return exchange.getResponse().setComplete();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return chain.filter(exchange);
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getOrder() {
|
|
||||||
return -1; // 优先级高
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,26 +0,0 @@
|
||||||
server.port=8080
|
|
||||||
|
|
||||||
# 应用名称
|
|
||||||
spring.application.name=gateway
|
|
||||||
|
|
||||||
# Nacos 服务发现配置
|
|
||||||
spring.cloud.nacos.discovery.server-addr=nacos:8848
|
|
||||||
spring.cloud.nacos.discovery.namespace=public
|
|
||||||
spring.cloud.nacos.discovery.group=DEFAULT_GROUP
|
|
||||||
spring.cloud.nacos.discovery.enabled=true
|
|
||||||
|
|
||||||
# Gateway 路由配置 - 使用服务发现
|
|
||||||
spring.cloud.gateway.routes[0].id=resource-server-a
|
|
||||||
spring.cloud.gateway.routes[0].uri=lb://aserver
|
|
||||||
spring.cloud.gateway.routes[0].predicates[0]=Path=/a/**
|
|
||||||
spring.cloud.gateway.routes[0].filters[0]=RewritePath=/a/(?<segment>.*), /api/${segment}
|
|
||||||
spring.cloud.gateway.routes[0].filters[1]=TokenRelay
|
|
||||||
|
|
||||||
spring.cloud.gateway.routes[1].id=resource-server-b
|
|
||||||
spring.cloud.gateway.routes[1].uri=lb://bserver
|
|
||||||
spring.cloud.gateway.routes[1].predicates[0]=Path=/b/**
|
|
||||||
spring.cloud.gateway.routes[1].filters[0]=RewritePath=/b/(?<segment>.*), /api/${segment}
|
|
||||||
spring.cloud.gateway.routes[1].filters[1]=TokenRelay
|
|
||||||
|
|
||||||
# OAuth2 配置
|
|
||||||
spring.security.oauth2.resourceserver.jwt.jwk-set-uri=http://oidc:8080/oauth2/jwks
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
# Bootstrap configuration for Nacos config center
|
|
||||||
spring.application.name=gateway
|
|
||||||
|
|
||||||
# Nacos config center configuration
|
|
||||||
spring.cloud.nacos.config.server-addr=nacos:8848
|
|
||||||
spring.cloud.nacos.config.namespace=public
|
|
||||||
spring.cloud.nacos.config.group=DEFAULT_GROUP
|
|
||||||
spring.cloud.nacos.config.file-extension=properties
|
|
||||||
spring.cloud.nacos.config.enabled=true
|
|
||||||
Loading…
Reference in New Issue