Zuul прокси не маршрутизируется

Во время работы над весенними микросервисами я не могу маршрутизировать api через прокси-сервер zuul

Это мой код

еврка:

application.yml

spring:
  application:
    name: api
  cloud:
    config:
      enabled: true

server:
  port: ${PORT:8761}


eureka:
  client:
    registerWithEureka: false
    fetchRegistry: false
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
  instance:
    hostname: localhost

зуул:

application.yml

spring:
  application:
    name: proxy-server

server:
  port: 8079

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka
  fetchRegistry: true

zuul:
  ignored-services: '*'
  prefix: /api
  routes:
    account:
        path: /account/**
        serviceId: account
        stripPrefix: false
  host:
    socket-timeout-millis: 30000

ribbion:
  eureka:
    enabled: true

учетная запись application.yml

ribbion:
  eureka:
    enabled: true


eureka:
  instance:
    preferIpAddress: true
  client:
    serviceUrl:
      defaultZone: ${EUREKA_URI:http://localhost:8761/eureka}
    instance:
      preferIpAddress: true

зависимость:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Finchley.SR1</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

Теперь URL-адрес localhost:8080/user/ работает нормально, но localhost:8080/api/account/user/ выдает ошибку 404.

Не уверен, что я здесь делаю не так, любая информация будет полезна, пожалуйста, дайте мне знать, если вам нужны другие детали

каков маршрут для API / учетной записи / пользователя в нисходящей службе?

shinjw 17.08.2018 08:16

его localhost:8080/user @shinjw

springNew 17.08.2018 08:17

есть несоответствие маршрута. нисходящая услуга должна быть полностью определенным путем. в противном случае вам нужно будет управлять путем через ZuulFilter

shinjw 17.08.2018 08:18

Ваш прокси Zuul находится на порту 8079, а не на порту 8080.

M. Deinum 17.08.2018 08:19

@shinjw не могли бы вы предоставить и пример, как с этим URL-адресом. Я слежу за руководствами, в которых говорится, что localhost:{zuulPort}/{prefix}/{serviceId}/{downstream Microservice url}

springNew 17.08.2018 08:20

Убедитесь, что служба учетных записей принимает запросы на api / account / user / endpoint. Если это учетная запись / пользователь /, установите для stripPrefix значение true.

S.K. 17.08.2018 08:21

@ M.Deinum: да, и позвольте мне внести правку в вопрос, но он также не работает с этим портом

springNew 17.08.2018 08:21

на самом деле учетная запись принимает URL-адрес без account в URL-адресе

springNew 17.08.2018 08:22

Что такое spring.application.name для вашей службы account? В вашем application.yml их нет. Так есть ли на самом деле сервис account, зарегистрированный в Eureka.

M. Deinum 17.08.2018 08:23

путь должен соответствовать нисходящему потоку. Ваш контроллер микросервисов должен будет принимать запросы на /api/account/user. не /user

shinjw 17.08.2018 08:23

Я сменил stripPrefix: true, и теперь он работает нормально. Еще раз, должен ли я создать микросервис для безопасности или я должен использовать прокси-сервис zuul для безопасности и аутентификации ... Пожалуйста, дайте мне знать

springNew 17.08.2018 09:49

это полностью зависит от вас

shinjw 17.08.2018 10:46

может ли кто-нибудь предоставить идею, как реализовать независимо от прокси-сервера zuul, будет потрясающе :)

springNew 17.08.2018 12:11
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
13
2 213
2

Ответы 2

Что вам нужно сделать,

  1. Создайте проект загрузки Spring с Zuul в качестве зависимости.
  2. Аннотируйте основной класс с помощью @EnableZuulProxy
  3. Настройте маршруты и конечные точки в файле application.properties
  4. Создайте и запустите службу

Я предлагаю сначала выполнить описанные выше шаги и заставить их работать. Затем настройте этот проект в соответствии с вашими потребностями. Ниже приведена статья, в которой более подробно описаны вышеперечисленные шаги. Как создать API-шлюз с Netflix Zuul + Spring Boot

Я думаю, вы забыли добавить имя службы учетной записи в account application.yml

spring:
     application:
           name: account

Другие вопросы по теме