带有URL重写的Nginx反向代理

在这篇文章中,我将讨论如何使用Nginx反向代理的URL重写。NGINX的重写规则是用来改变客户端请求的整个或部分URL的。URL重写可以用于:1)在Nginx中控制请求;2)通知客户所请求的资源已经改变了位置,等等。所有与本帖相关的源代码都可以在gitlab上找到。请克隆该源码并继续该帖子。

场景

我有三个REST服务gateway-api,lekana-api,siddhi-api。gateway-api在7656端口服务,它有api/gateway REST端点。lekana-api在7654端口服务,它有api/lekana REST端点。siddhi-api在7655端口服务,它有api/siddi REST端点。我需要用一个公共IP地址/域名来托管这些网络服务。下图描述了到不同网络服务的请求路线。bassa.com是域名。来到bassa.com的请求被路由到gateway-api。来到bassa.com/lekana的请求被送到lekana-api。请求来到bassa.com/siddhi路由到siddhi-api。

重写规则

以下是Nginx收到的与三个REST服务端点有关的不同请求。

为了给lekana和siddhi APIs提供服务,我需要从Nginx重写lekana-api和siddhi-api的URL,如下所示。

Nginx配置

以下是我用来为不同的API和URL重写服务的bassa.com Nginx配置文件。重写 ^/lekana(.*)$1 break; 条目删除URL中间的lekana部分。重写 ^/siddhi(.*)$1 break; 条目删除URL中间的siddhi部分。

Dockerize Nginx

以下是我用来对Nginx进行docker化的Docker文件。它用bassa.com的配置文件建立了一个Nginx docker镜像。

运行服务

systemnginx中有四个服务,分别是bassa-api、lekana-api和siddhi-api。以下是我用来运行这些服务的docker-compose.yaml文件。我使用了链接容器在Nginx和API服务之间进行通信。

以下是通过docker-compose启动和运行这些服务的方法。如果需要,你可以通过docker-compose up -d命令一次性启动所有服务。

测试服务

为了在本地环境中测试服务,我需要在/etc/hosts文件中用我的本地机器IP定义bassa.com域。然后,到该域的请求就会重定向到我的本地机器(在生产环境中,该域需要在DNS服务器上设置)。以下是我添加到/etc/hosts文件中的条目。

现在我可以通过CURL命令测试REST APIs。以下是不同API的请求和响应。所有的请求首先进入Nginx。然后,Nginx通过使用URL重写将请求路由到不同的REST服务。

展开阅读全文

页面更新:2024-04-22

标签:重写   条目   路由   端口   网络服务   命令   规则   机器   文件   测试

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top