今天写代码去前端网页测试功能,出现了一个很神奇的问题,之前明明能找到请求,现在变成503了。
1.项目背景
我的项目是微服务项目,使用了gateway网关和nacos注册中心。
2.错误原因查找
出现503代表服务器有问题,没访问到。
2.1
我们直接去修改前端发请求的地方,改成不通过网关,直接改成服务器端口和server的port,例如:192.168.00.0:8081,通过这个操作我们可以判断是网关的问题还是自己服务的问题,我这里通过测试,发现是网关的问题。
2.2
然后我们查看网关的配置文件
server:
port: 10010
spring:
application:
name: gateway
cloud:
gateway:
routes:
- id: userservice
uri: lb://userservice # 路由的地址,lb,负载均衡
predicates:
- Path=/user/**,/address/**
- id: orderservice
uri: lb://orderservice
predicates:
- Path=/order/**,/pay/**
- id: itemservice
uri: lb://itemservice
predicates:
- Path=/item/**
- id: searchservice
uri: lb://searchservice
predicates:
- Path=/search/**
default-filters:
- AddRequestHeader=authorization, 2
globalcors: # 全局的跨域处理
add-to-simple-url-handler-mapping: true # 解决options请求被拦截问题
corsConfigurations:
'[/**]':
allowedOrigins: # 允许哪些网站的跨域请求
- "http://localhost:9001"
- "http://localhost:9002"
allowedMethods: # 允许的跨域ajax的请求方式
- "GET"
- "POST"
- "DELETE"
- "PUT"
- "OPTIONS"
allowedHeaders: "*" # 允许在请求中携带的头信息
allowCredentials: true # 是否允许携带cookie
maxAge: 360000 # 这次跨域检测的有效期
仔细对比服务名称以及配置文件格式,发现并没有问题。
2.3
查看nacos客户端,看服务有没有注册上去。
发现服务名字正确也注册上来了,然后我们查看一下详情。
然后我发现ip地址不正确,想了很久,发现这个地址是虚拟机的地址,把虚拟机禁用再重启nacos就可以了,记得看ip是否正确。
这里只是503错误的一种,还有许多种可能。