Create AWS Application Load Balancer Rule which trim off request's prefix without using additional reverse proxy like nginx, httpd

随声附和 提交于 2019-12-10 15:58:46

问题


Basically, I have a couple of services. I want to forward every requests with prefix "/secured" to server1 port 80 and all other requests to server 2 port 80. The problem is that on server1, I am running service which accept the request without "/secured" prefix. In other words, I want to forward every requests such as "http://example.com/secured/api/getUser" to server1 as "http://example.com/api/getUser" (remove /secured from request' path).

With AWS ALB, currently the request is sent as http://example.com/secured/api/getUser; which forces me to update my server1's code so that the code handles requests with /secured prefix which doesn't look good.

Is there any easy way to solve this with ALB?

Thanks.


回答1:


I had the same issue, and as Mark pointed out, you can use reverse proxy on your server and do something like this (this is Nginx configuration):

server {
  listen 80 default_server;

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

This will strip the /secured part and proxy everything else to your service. Just be sure to have the trailing / after the service port.




回答2:


I can confirm that this is unfortunately not possible with the ALB alone - and I agree it really should be.

AWS states:

Note that the path pattern is used to route requests but does not alter them. For example, if a rule has a path pattern of /img/*, the rule would forward a request for /img/picture.jpg to the specified target group as a request for /img/picture.jpg.



来源:https://stackoverflow.com/questions/39317685/create-aws-application-load-balancer-rule-which-trim-off-requests-prefix-withou

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!