server: port: 8180 spring: application: name: gateway-service # Gateway 必须使用 reactive 模式(WebFlux),不能使用 Spring MVC main: web-application-type: reactive # 配置中心 cloud: nacos: discovery: server-addr: ${NACOS_SERVER_ADDR:localhost:8848} namespace: dev group: DEFAULT_GROUP config: server-addr: ${NACOS_SERVER_ADDR:localhost:8848} file-extension: yml namespace: dev group: DEFAULT_GROUP # Gateway 路由配置(使用新的 webflux 配置路径) gateway: server: webflux: # 服务发现路由(自动路由) discovery: locator: enabled: false # 关闭自动路由,使用手动配置 # 手动配置路由 routes: # ==================== 认证服务路由 ==================== - id: auth-service uri: lb://auth-service predicates: - Path=/auth/** filters: - RewritePath=/auth/(?.*), /urban-lifeline/auth/$\{segment} - name: RequestRateLimiter args: redis-rate-limiter.replenishRate: 100 redis-rate-limiter.burstCapacity: 200 # ==================== 系统服务路由 ==================== - id: system-service uri: lb://system-service predicates: - Path=/system/** filters: - RewritePath=/system/(?.*), /urban-lifeline/system/$\{segment} # ==================== 日志服务路由 ==================== - id: log-service uri: lb://log-service predicates: - Path=/log/** filters: - RewritePath=/log/(?.*), /urban-lifeline/log/$\{segment} # ==================== 文件服务路由 ==================== - id: file-service uri: lb://file-service predicates: - Path=/file/** filters: - RewritePath=/file/(?.*), /urban-lifeline/file/$\{segment} # ==================== 消息服务路由 ==================== - id: message-service uri: lb://message-service predicates: - Path=/message/** filters: - RewritePath=/message/(?.*), /urban-lifeline/message/$\{segment} # ==================== 招投标服务路由 ==================== - id: bidding-service uri: lb://bidding-service predicates: - Path=/bidding/** filters: - RewritePath=/bidding/(?.*), /urban-lifeline/bidding/$\{segment} # ==================== 平台服务路由 ==================== - id: platform-service uri: lb://platform-service predicates: - Path=/platform/** filters: - RewritePath=/platform/(?.*), /urban-lifeline/platform/$\{segment} # ==================== 工单服务路由 ==================== - id: workcase-service uri: lb://workcase-service predicates: - Path=/workcase/** filters: - RewritePath=/workcase/(?.*), /urban-lifeline/workcase/$\{segment} # ==================== 定时任务服务路由 ==================== - id: crontab-service uri: lb://crontab-service predicates: - Path=/crontab/** filters: - RewritePath=/crontab/(?.*), /urban-lifeline/crontab/$\{segment} # ==================== AI Agent 服务路由 ==================== - id: agent-service uri: lb://agent-service predicates: - Path=/agent/** filters: - RewritePath=/agent/(?.*), /urban-lifeline/agent/$\{segment} # 全局跨域配置 globalcors: cors-configurations: '[/**]': allowedOriginPatterns: "*" allowedMethods: - GET - POST - PUT - DELETE - OPTIONS allowedHeaders: "*" allowCredentials: true maxAge: 3600 datasource: # 按你的实际库名改一下,比如 urban-lifeline_system url: jdbc:postgresql://127.0.0.1:5432/urban_lifeline # 换成你的 PG 库名 username: postgres # PG 用户 password: postgres # PG 密码 driver-class-name: org.postgresql.Driver # Redis 配置(用于限流、缓存) data: redis: host: ${REDIS_HOST:localhost} port: ${REDIS_PORT:6379} password: 123456 database: 0 timeout: 5000ms lettuce: pool: max-active: 20 max-wait: -1ms max-idle: 10 min-idle: 5 # 认证配置 auth: enabled: true gateway-mode: true token-header: Authorization token-prefix: "Bearer " # 认证接口白名单(login/logout/captcha/refresh) auth-paths: - /auth/login - /auth/logout - /auth/captcha - /auth/refresh # 通用白名单(Swagger、健康检查等) whitelist: - /actuator/** - /v3/api-docs/** - /swagger-ui/** - /swagger-resources/** - /webjars/** - /doc.html - /favicon.ico - /error # Actuator 监控端点 management: endpoints: web: exposure: include: health,info,gateway endpoint: health: show-details: always # 日志配置(详细配置见 log4j2.xml) logging: config: classpath:log4j2.xml charset: console: UTF-8 file: UTF-8