Ошибка 404 в весеннем облачном шлюзе для каждого альтернативного запроса - PullRequest
2 голосов
/ 25 мая 2020

Я столкнулся с очень специфической проблемой в Spring Cloud Gateway. Каждый альтернативный запрос возвращает 404. Это происходит во всех без исключения службах, которые я настроил в api-gateway. Я даже не знаю, с чего начать отладку этой проблемы.

Вот мой файл application.yml для общей конфигурации.

server:
  port: 8080
  ssl:
    enabled: true
    key-store: classpath:keystore.p12
    key-store-password: password
    key-store-type: pkcs12
    key-alias: tomcat

security:
  require-ssl=true:
logging:
  level:
    org:
      springframework:
        cloud.gateway: DEBUG
        http.server.reactive: DEBUG
        web.reactive: DEBUG

spring:
  application:
    name: api-gateway
  cloud:
    gateway:
      httpclient:
        ssl:
          useInsecureTrustManager: true

Вот мой java конфигурационный файл


@EnableWebFluxSecurity
public class SecurityConfig {

    @Bean
    public SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http,
                                                            ReactiveClientRegistrationRepository clientRegistrationRepository) {
        // Authenticate through configured OpenID Provider
        http.oauth2Login();
        // Also logout at the OpenID Connect provider
        http.logout(logout -> logout.logoutSuccessHandler(new OidcClientInitiatedServerLogoutSuccessHandler(
                clientRegistrationRepository)));
        // Require authentication for all requests
        http.authorizeExchange().anyExchange().authenticated();
        // Allow showing /home within a frame
        http.headers().frameOptions().mode(Mode.SAMEORIGIN);
        // Disable CSRF in the gateway to prevent conflicts with proxied service CSRF
        http.csrf().disable();
        return http.build();
    }
}

Вот конфигурационный файл c с конкретным профилем пружины, который загружается поверх общего файла application.yml.

spring:
  security:
    oauth2:
      client:
        provider:
          keycloak:
            issuerUri: http://localhost:9080/auth/realms/mylocal
            userNameAttribute: preferred_username
        registration:
          keycloak:
            clientId: api-gateway-client
            clientSecret: abcdefgh-ijkl-mnop-qrst-uvwxyz5d6a9
  cloud:
    gateway:
      default-filters:
        - TokenRelay
      routes:
        - id: news
          uri: http://localhost:8082/news
          predicates:
            - Path= /news/**
        - id: customers
          uri: http://localhost:8083/customers
          predicates:
            - Path= /boards/**
        - id: search
          uri: http://localhost:8085/search
          predicates:
            - Path= /search/**

1 Ответ

0 голосов
/ 29 мая 2020

Эй, у меня тоже недавно возникла проблема, я понял, что это проблема балансировки нагрузки. Убедитесь, что ваше spring.application.name микросервиса, с которым вы пытаетесь связаться, написано заглавными буквами (ПРИМЕР), особенно если вы используете Eureka. (надеюсь, это поможет)

...