1.前端js发起请求:
http://www.easymall.com/products/pageManage?page=1&rows=1
其中www.easymall.com通过host文件映射,访问到nginx服务器
2.nginx服务器拦截请求:
80端口监听到该次请求,再去查看映射名字是否是www.easymall.com,如果是,就开始location判断请求地址中有 /products 所以匹配成功,于是截取请求,剩下/pageManage?page=1&rows=1,拼接到proxy_pass的地址中,形成 http://127.0.0.1:8103/zuul-product/product/manage/pageManage?page=1&rows=1;,通过这个地址去访问zuul网关。
3.zuul网关进行匹配:
zuul网关的application文件的配置如下
zuul.routes.product.path=/zuul-product/**
zuul.routes.product.service-id=productservice
http://127.0.0.1:8103/zuul-product/product/manage/pageManage?page=1&rows=1 该地址被网关拦截下来,然后开始进行匹配,和 /zuul-product/**匹配成功,于是zuul网关就使用productservice这个名字,去注册表中找这个微服务的名字,舍弃/zuul-product前面的地址,把地址拼接到请求中zuul-product的位置,,使用ribbon调用该服务。
比如:productservice这个微服务的地址是127.0.0.1:10003。那么经过拼接的地址就是:http://127.0.0.1:10003/product/manage/pageManage?page=1&rows=1