如何在AWS Elastic Beanstalk与Route 53中将域名指向指定路径路由
域名指向子路径解决方案
方案1:云服务商CDN/反向代理规则配置(最推荐,无跳转感知、不影响原站路径逻辑)
- 先将
domain2.com的DNS解析指向你所用的CDN/反向代理服务节点 - 配置反向代理规则:所有
domain2.com的请求,源站地址设置为domain1.com,路径重写规则为^/(.*)→/apples/$1 - 额外需要将
domain2.com加入domain1.com对应服务的域名白名单,避免源站拦截跨域名请求 - 如果开启HTTPS,需要为
domain2.com配置独立SSL证书,或者使用泛域名证书同时覆盖两个域名
方案2:原站Web服务器(Nginx/Apache)配置
如果自行管理源站Web服务器,可以直接在服务端加规则实现,以下为Nginx配置示例:
server { listen 80; listen 443 ssl; server_name domain2.com; # 自行补充domain2.com的SSL证书配置 ssl_certificate /path/to/domain2.com.crt; ssl_certificate_key /path/to/domain2.com.key; location / { rewrite ^/(.*)$ /apples/$1 break; proxy_pass https://domain1.com; proxy_set_header Host domain1.com; # 如需保留用户真实IP可补充以下配置 proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
- 配置完成后执行
nginx -s reload即可生效 - 该方案逻辑和CDN反向代理一致,仅规则执行位置放在源站服务器
方案3:301/302跳转配置(不推荐,地址栏会显示原路径)
如果不需要隐藏原站路径,可以用最简单的跳转实现:
- 把
domain2.com的DNS解析指向和domain1.com相同的服务器/CDN节点 - 在Web服务器配置或者CDN规则里配置:所有
domain2.com的请求301跳转到https://domain1.com/apples$request_uri - 该方案仅需1条规则即可实现,但用户访问
domain2.com时地址栏会自动变为domain1.com/apples开头的路径
Nuxt应用适配注意事项
- 配置完成后需要在Nuxt的
nuxt.config.ts/nuxt.config.js中配置allowedHosts,把domain2.com加入允许列表,避免Nuxt的Host校验拦截请求 - 如果Nuxt应用内用到了绝对路径的静态资源或者路由跳转,建议改为相对路径,或者配置动态base适配两个域名的访问场景
内容的提问来源于stack exchange,提问作者XenonCI
相关产品推荐
相关产品推荐

