在 《服务注册、发现和远程调用》 这篇文章中介绍关于服务注册、发现和远程调用的一个 Demo,本文在这篇文章的基础上介绍如何使用 Spring Cloud Gateway 搭建一个网关。
一、问题
在上篇文章中,分别创建了 service_user 和 service_dict 两个服务,两个服务分别使用了 8001 和 8002 两个端口。这样直接通过 PostMan 或浏览器调用其中的接口没什么问题,如下图所示。
从上图可以看到,访问 user 使用了 8001 端口,访问 dict 使用了 8002 端口,如果要为这些服务提供一个页面,由于不同的服务使用了不同的端口号,那么在写前端页面时就会因为有多个端口而导致难以管理,使得开发变得复杂。为了解决该问题,那么此时,我们可以通过反向代理来进行完成,比如 Nginx。
二、使用 Nginx 的反向代理功能来完成请求的分发
在上面抛出的问题中,我们可用使用 Nginx 的反向代理功能来进行解决,解决的方法也很容易。这里 Nginx 直接下载一个 Windows 版本的进行测试。对 Nginx 进行简单的配置,配置如下:
server
{
listen 9001;
server_name localhost;
location ~ /user/
{
proxy_pass http://localhost:8001;
}
location ~ /dict/
{
proxy_pass http://localhost:8002;
}
}
这里通过配置了两个 location 完成了服务的分发,并且可用使用统一的端口 9001,测试如下图所示。
可用看到,通过访问 localhost 的 9001 端口可用正常的访问 service_user 和 service_dict 两个服务。接着,我们写一个页面,通过页面来调用 localhost 的