소개
게시글
질문&답변
2023.12.23
직접 어플리케이션 서버에 요청을 보내면 동작하는데, gateway 서버로 보내면 404가 뜹니다
해결했습니다ㅜ Boot 3으로 해서인지 gateway server 프로젝트를 만들면서 gateway 라이브러리를 추가하니까 ' org.springframework.cloud :spring-cloud-starter-gateway' 가 아니라 ' org.springframework.cloud :spring-cloud-starter-gateway-mvc' 가 추가되었더라구요. 그래서 ' org.springframework.cloud :spring-cloud-starter-gateway' 로 변경하고 eureka client 서버들 XXXApplication 클래스에 '@EnableDiscoveryClient' 어노테이션을 달고 게이트웨이 서버 실행 후에 약간의 시간이 지나면 정상적으로 요청을 받을 수 있었습니다. 감사합니다 ㅎㅎ 이어서 강의 들으러 가보겠습니다 메리크리스마스여
- 0
- 5
- 594
질문&답변
2023.12.21
직접 어플리케이션 서버에 요청을 보내면 동작하는데, gateway 서버로 보내면 404가 뜹니다
instance-id 에 넣은 변수명?에 값이 매칭되지 않아서 어플리케이션서버(rms)로 온 요청 url에서 오류가 나는 것 같습니다. 제가 이해한 게 맞을까요? 2023-12-21T22:54:20.338+09:00 INFO 28432 --- [rms] [tbeatExecutor-0] c.n.d.s.t.d.RedirectingEurekaHttpClient : Request execution error. endpoint=DefaultEndpoint{ serviceUrl=' http://localhost:8761/eureka/ } exception=Not enough variable values available to expand ' spring.cloud .client.ipAddress' stacktrace=java.lang.IllegalArgumentException: Not enough variable values available to expand ' spring.cloud .client.ipAddress' at org.springframework.web.util.UriComponents$VarArgsTemplateVariables.getValue( UriComponents.java:370 ) at org.springframework.web.util.UriComponents.expandUriComponent( UriComponents.java:263 ) at org.springframework.web.util.HierarchicalUriComponents$PathSegmentComponent.expand( HierarchicalUriComponents.java:983 ) at org.springframework.web.util.HierarchicalUriComponents.expandInternal( HierarchicalUriComponents.java:440 ) at org.springframework.web.util.HierarchicalUriComponents.expandInternal( HierarchicalUriComponents.java:53 ) at org.springframework.web.util.UriComponents.expand( UriComponents.java:172 ) at org.springframework.web.util.DefaultUriBuilderFactory$ DefaultUriBuilder.build ( DefaultUriBuilderFactory.java:403 ) at org.springframework.web.util.DefaultUriBuilderFactory.expand( DefaultUriBuilderFactory.java:154 ) at org.springframework.web.client.RestTemplate.execute( RestTemplate.java:780 ) at org.springframework.web.client.RestTemplate.exchange ( RestTemplate.java:663 ) at org.springframework.cloud.netflix .eureka.http.RestTemplateEurekaHttpClient.sendHeartBeat( RestTemplateEurekaHttpClient.java:99 ) at com.netflix .discovery.shared.transport.decorator.EurekaHttpClientDecorator$3.execute( EurekaHttpClientDecorator.java:92 ) at com.netflix .discovery.shared.transport.decorator.RedirectingEurekaHttpClient.execute( RedirectingEurekaHttpClient.java:91 ) at com.netflix .discovery.shared.transport.decorator.EurekaHttpClientDecorator.sendHeartBeat( EurekaHttpClientDecorator.java:89 ) at com.netflix .discovery.shared.transport.decorator.EurekaHttpClientDecorator$3.execute( EurekaHttpClientDecorator.java:92 ) at com.netflix .discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute( RetryableEurekaHttpClient.java:120 ) at com.netflix .discovery.shared.transport.decorator.EurekaHttpClientDecorator.sendHeartBeat( EurekaHttpClientDecorator.java:89 ) at com.netflix .discovery.shared.transport.decorator.EurekaHttpClientDecorator$3.execute( EurekaHttpClientDecorator.java:92 ) at com.netflix .discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute( SessionedEurekaHttpClient.java:77 ) at com.netflix .discovery.shared.transport.decorator.EurekaHttpClientDecorator.sendHeartBeat( EurekaHttpClientDecorator.java:89 ) at com.netflix .discovery.DiscoveryClient.renew( DiscoveryClient.java:837 ) at com.netflix .discovery.DiscoveryClient$ HeartbeatThread.run ( DiscoveryClient.java:1401 ) at java.base/java.util.concurrent.Executors$ RunnableAdapter.call ( Executors.java:539 ) at java.base/ java.util.concurrent.FutureTask.run ( FutureTask.java:264 ) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker( ThreadPoolExecutor.java:1136 ) at java.base/java.util.concurrent.ThreadPoolExecutor$ Worker.run ( ThreadPoolExecutor.java:635 ) at java.base/ java.lang.Thread.run ( Thread.java:833 )
- 0
- 5
- 594
질문&답변
2023.12.20
직접 어플리케이션 서버에 요청을 보내면 동작하는데, gateway 서버로 보내면 404가 뜹니다
답변 감사드립니다.. 이렇게나 빨리 주시다니 ㅜ 제가 이렇게 저렇게 바꿔가며 테스트하다가 질문드리다보니, 혼란이 좀 있었습니다..알려주신 것처럼 매핑도 해보고, 아예 삭제도 해보다가 삭제한 뒤에 보내서 predicates 설정이 빠진채로 질문드렸네요..ㅜ predicates: - Path=/rms/** 로 설정해두고 POST 요청을 http://localhost:8070/rms/member/add 로 날렸을때 404가 떳습니다.. 랜덤으로 지정된 포트 xxxx http://localhost:xxxx/rms/member/add 로 요청하면 정상동작은 했습니다.. erureka 서버 ID가 좀 의심스럽기는 했습니다. 강의에서는 item-service라고 떡하니 떠있는데, 저는 암호화된 랜덤값처럼 떳습니다. (사진) 포트와 name을 설정한 gateway-server는 떡하니 gateway-server:8070으로 뜨는데 RMS 서버는 e7aff560143dac.... 로 뜨는걸 보면 이쪽도 좀 수상하긴 해서 config-server의 rms-local.yml 파일에서 eureka.instance.instance-id값에 들어가는 spring.cloud .client.hostname 에 값을 rms로 넣어주기도 해봤는데 그때도 역시 404였습니다.. 지금은 알려주신대로 서버를 완전히 똑같이 처음부터 만들어보려고 하고 있습니다.. 어느부분을 확인해야될지 잘 모르겠습니다.ㅜ
- 0
- 5
- 594