Google Cloud Load Balancer:如何重定向主机并加基础路径且保留原路径
主机重定向+保留原路径并添加基础路径的解决方案
针对你需要将abc.mydomain.com/original/path重定向到abc.mydomain2.com/base_path/original/path的需求,不同环境下的实现方案如下:
Nginx 配置
利用rewrite规则捕获原路径并拼接新地址:
server { listen 80; server_name abc.mydomain.com; # 301永久重定向,临时重定向替换为redirect rewrite ^/(.*)$ https://abc.mydomain2.com/base_path/$1 permanent; }
^/(.*)$会匹配域名后的所有路径内容,将其拼接到新地址的base_path/后,完全保留原路径信息。
Cloudflare Workers 实现
通过Worker脚本修改URL并返回重定向:
addEventListener('fetch', event => { event.respondWith(handleRequest(event.request)) }) async function handleRequest(request) { const url = new URL(request.url) url.hostname = 'abc.mydomain2.com' url.pathname = `/base_path${url.pathname}` return Response.redirect(url.toString(), 301) }
Envoy 配置(解决pathRedirect丢失路径问题)
Envoy的pathRedirect会覆盖原路径,改用prefix_rewrite配合主机重定向即可:
routes: - match: prefix: "/" domain: "abc.mydomain.com" redirect: hostname: "abc.mydomain2.com" prefix_rewrite: "/base_path"
该配置会自动将原路径追加到/base_path之后,完美实现需求。
内容的提问来源于stack exchange,提问作者Abhishek Thaker
相关产品推荐
相关产品推荐

