12

基本上,我有几个服务。我想将带有前缀“/secured”的每个请求转发到 server1 端口 80,并将所有其他请求转发到服务器 2 端口 80。问题是在 server1 上,我正在运行接受没有“/secured”前缀的请求的服务。换句话说,我想将诸如“ http://example.com/secured/api/getUser ”之类的每个请求作为“ http://example.com/api/getUser ”转发server1(从请求中删除/secured小路)。

使用 AWS ALB,当前请求作为http://example.com/secured/api/getUser发送;这迫使我更新我的 server1 的代码,以便代码处理带有 /secured 前缀的请求,这看起来不太好。

有没有什么简单的方法可以用 ALB 解决这个问题?

谢谢。

4

2 回答 2

6

我可以确认,不幸的是,仅使用 ALB 是不可能的 - 我同意确实应该这样做。

AWS 声明:

请注意,路径模式用于路由请求,但不会更改它们。例如,如果规则具有 /img/* 的路径模式,则该规则会将 /img/picture.jpg 的请求作为 /img/picture.jpg 的请求转发到指定的目标组。

于 2017-09-29T03:24:06.900 回答
4

我遇到了同样的问题,正如 Mark 指出的那样,您可以在服务器上使用反向代理并执行以下操作(这是 Nginx 配置):

server {
  listen 80 default_server;

  location /secured/ {
    proxy_pass http://localhost:{service_port}/;
  }
}

这将剥离 /secured 部分并将其他所有内容代理给您的服务。只要确保在服务端口之后有尾随/。

于 2016-11-22T14:05:53.750 回答