常常会有同窗遇到api经过ip能够访问,可是经过域名却不能够访问。本篇文章总结了形成这种状况可能的缘由。 由于与具体技术的选型、规则配置有关,因此没有深刻讨论,只是列出可能性,仅供参考。html
经过域名访问不到的请求表现的现象有nginx
这些都是接口访问不到,2是配置了错误页面;3,4则发出的POST/PUT 请求,可是请求了GET方法算法
经过域名访问,在整个后端的访问路径以下图,大体分四个部分,浏览器、负载均衡层、网关层、服务层。 域名解析这里忽略不讨论了。segmentfault
出现ip能够访问,可是域名不可访问,4层都有可能致使这个问题。后端
在微服务口中,单独限制了这个接口的访问权限,致使该接口没有注册到注册中心,这个能够经过查看代码,或者查看注册中心注册列表找出问题。api
网关在根据api uri路由到某个具体服务时,为了提升检索效率,有些定义了路由规则,不一样服务以不一样的prefix来区分。这样服务里面的某个api prefix不符合该服务定义的前缀规则,则匹配不上 (固然通常的网关路由会作降级,前缀不符,就降级为遍历)浏览器
这个能够经过访问网关的ip/uri来找出问题。服务器
这些均可以经过访问网关的依赖,或者网关ip/uri来找出问题。负载均衡
Nginx里能够配置各类redirect规则,过滤规则。当经过网关ip能够访问api时,那多半是nginx的问题。能够检查nginx的配置问题,来定位问题。微服务
好比网站从http升级到https,某个uri redirect了。当咱们在浏览器中键入以www为开头的网址时,网页并不会自动跳转为HTTPS网站,由于浏览器默认打开HTTP网站,基于此,咱们就须要对HTTP的访问在服务器端作30一、302或307重定向,使之跳转到HTTPS网站。当使用了301,302后,浏览器会使用GET方式访问在Location中规定的URI,而无视原先请求的方法。
关注公众号【方丈的寺院】,第一时间收到文章的更新,与方丈一块儿开始技术修行之路