1

스프링 부트를 사용하여 마이크로 서비스 프로젝트를 개발 중입니다. 여기서 UI 페이지는 별도의 마이크로 서비스와 별도의 마이크로 서비스에있는 프록시에 있습니다. zuul 마이크로 서비스를 통해 UI 페이지에 액세스하고 싶습니다. 아래에 프로젝트 구조를 추가했습니다.zuul 프록시를 통해 다른 마이크로 서비스에 액세스하는 방법

enter image description here

UiService Application.properties :

server.port=8090 
spring.mvc.view.prefix: /WEB-INF/views/ 
spring.mvc.view.suffix: .jsp 
spring.application.name=ui 
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/ 
eureka.instance.preferIpAddress=true 
eureka.instance.leaseRenewalIntervalInSeconds=5 

zuulService application.yml :

server: 
port: 8080 
eureka: 
instance: 
    leaseRenewalIntervalInSeconds: 10 
    statusPageUrlPath: /info 
    healthCheckUrlPath: /health  

logging: 
level: 
    ROOT: INFO 
    org.springframework.web: DEBUG 
zuul: 
    routes: 
    ui: 
     url: http://localhost:8090 
ribbon: 
    eager-load: 
    enabled: false 

내 고정 표시기의 작성 파일 :

version: '3' 
services: 
    eureka: 
    build: eurekaService 
    ports: 
     - "8761:8761" 
    zuul: 
    build: zuulService 
    links: 
    - eureka 
    ports: 
     - "8080:8080" 
    turbine: 
    build: turbineService 
    links: 
    - eureka 
    ports: 
    - "8989:8989" 
    ui: 
    build: uiService 
    links: 
    - eureka 
    ports: 
    - "8090:8090" 

uiSer 그 구조 :

enter image description here

내 유레카 서비스 페이지 :

enter image description here

실행 고정 표시기에서이 프로젝트 (고정 표시기-구성까지 -d), 후 나는 로그인에 액세스하려고 해요 때 화면 (uiService 내에서 사용할 수 있음)이 예외로 표시됩니다. 어떻게 해결할 수 있을까요?

enter image description here

UIService 홈페이지 방법 :

@SpringBootApplication 
@EnableDiscoveryClient 
@EnableCircuitBreaker 
public class UIApplication { 

    public static void main(String[] args) { 
     SpringApplication.run(UIApplication.class, args); 
    } 
    } 

uiService의 pom.xml 파일은 :

<modelVersion>4.0.0</modelVersion> 
     <parent> 
      <groupId>com.scm</groupId> 
      <artifactId>demo</artifactId> 
      <version>0.0.1-SNAPSHOT</version> 
     </parent> 
     <artifactId>uiService</artifactId> 
     <dependencies> 
      <dependency> 
       <groupId>org.springframework.cloud</groupId> 
       <artifactId>spring-cloud-starter-eureka</artifactId> 
      </dependency> 

      <dependency> 
       <groupId>org.springframework.cloud</groupId> 
       <artifactId>spring-cloud-starter-ribbon</artifactId> 
      </dependency> 

      <dependency> 
       <groupId>org.springframework.cloud</groupId> 
       <artifactId>spring-cloud-starter-hystrix</artifactId> 
      </dependency> 

      <dependency> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-starter-data-rest</artifactId> 
      </dependency> 

      <dependency> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-starter-actuator</artifactId> 
      </dependency> 

      <dependency> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-starter-test</artifactId> 
       <scope>test</scope> 
      </dependency> 
      <dependency> 
       <groupId>org.apache.tomcat.embed</groupId> 
       <artifactId>tomcat-embed-jasper</artifactId> 
       <scope>provided</scope> 
      </dependency> 

      </dependencies> 
     </project> 

답변

0

localhost:8090/login는 UI의 앱 관련없는 Zuul에 직접 요청입니다.

페이지를로드/표시하지 않으면 응용 프로그램을 시작하는 중에 오류가 발생하거나 /login가 존재하지 않을 수 있습니다.

로그를 공유 하시겠습니까?

+0

일단 내가 로그인 페이지를 표시하는 동안 Zuul 프록시를 사용하면 결과 (이미 첨부 된 SS)와 동일한 페이지를 얻게됩니다. url : localhost : 8080/ui/login ..... docker에 이미지를 배포하는 동안 오류가 발생하지 않았습니다 (docker-up -d). –

+0

공유 하시겠습니까? pom.xml, 스프링 부트 버전을 사용하고 있으며 UIController는 GET/login으로 매핑합니까? 나는 1.5.2 버전을 사용하고 – ootero

+0

, getmapping는 uiController '@RequestMapping (값 = "/ 로그인"방법 = RequestMethod.GET)에 \t 공공 문자열 getlogin이() { \t \t 반환 "로그인"; \t} 위의 ' , 내 uiService pom.xml을 추가했습니다. –