Во время работы над весенними микросервисами я не могу маршрутизировать 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.
Не уверен, что я здесь делаю не так, любая информация будет полезна, пожалуйста, дайте мне знать, если вам нужны другие детали
его localhost:8080/user @shinjw
есть несоответствие маршрута. нисходящая услуга должна быть полностью определенным путем. в противном случае вам нужно будет управлять путем через ZuulFilter
Ваш прокси Zuul находится на порту 8079, а не на порту 8080.
@shinjw не могли бы вы предоставить и пример, как с этим URL-адресом. Я слежу за руководствами, в которых говорится, что localhost:{zuulPort}/{prefix}/{serviceId}/{downstream Microservice url}
Убедитесь, что служба учетных записей принимает запросы на api / account / user / endpoint. Если это учетная запись / пользователь /, установите для stripPrefix значение true.
@ M.Deinum: да, и позвольте мне внести правку в вопрос, но он также не работает с этим портом
на самом деле учетная запись принимает URL-адрес без account в URL-адресе
Что такое spring.application.name для вашей службы account? В вашем application.yml их нет. Так есть ли на самом деле сервис account, зарегистрированный в Eureka.
путь должен соответствовать нисходящему потоку. Ваш контроллер микросервисов должен будет принимать запросы на /api/account/user. не /user
Я сменил stripPrefix: true, и теперь он работает нормально. Еще раз, должен ли я создать микросервис для безопасности или я должен использовать прокси-сервис zuul для безопасности и аутентификации ... Пожалуйста, дайте мне знать
это полностью зависит от вас
может ли кто-нибудь предоставить идею, как реализовать независимо от прокси-сервера zuul, будет потрясающе :)




Что вам нужно сделать,
@EnableZuulProxyapplication.propertiesЯ предлагаю сначала выполнить описанные выше шаги и заставить их работать. Затем настройте этот проект в соответствии с вашими потребностями. Ниже приведена статья, в которой более подробно описаны вышеперечисленные шаги. Как создать API-шлюз с Netflix Zuul + Spring Boot
Я думаю, вы забыли добавить имя службы учетной записи в account application.yml
spring:
application:
name: account
каков маршрут для API / учетной записи / пользователя в нисходящей службе?