创建 AWS 应用程序负载均衡器规则,无需使用额外的反向代理(如 nginx、httpd)即可修剪请求的前缀

aux*_*xdx 10 reverse-proxy amazon-web-services elastic-load-balancer

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

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

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

谢谢。

Kon*_*ong 6

不幸的是,我可以确认,仅靠 ALB 是不可能做到这一点的——而且我同意确实应该如此。

AWS 声明:

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


小智 4

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

server {
  listen 80 default_server;

  location /secured/ {
    proxy_pass http://localhost:{service_port}/;
  }
}
Run Code Online (Sandbox Code Playgroud)

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