如何配置Nginx实现example2指定路径无跳转展示example1对应内容
实现可行性结论
该需求完全可以通过Nginx配置实现,全程不会触发域名跳转,用户浏览器地址栏始终保留example2.com域名。
具体配置方法
你只需要修改example2.com对应的Nginx server块配置,两个站点原有正常运行的配置不需要改动,新增/custompage路径的专属反向代理规则即可,参考配置如下:
server { listen 80; # 如果配置了HTTPS就保留你原来的443监听、SSL证书相关配置 server_name example2.com; # 优先匹配/custompage路径及其下所有子请求 location ^~ /custompage { # 反向代理拉取example1.com的对应内容 proxy_pass http://example1.com; # 透传必要请求头,保证源站返回正确内容 proxy_set_header Host example1.com; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # 替换返回内容中的域名,保证静态资源从当前域名加载 sub_filter 'example1.com' 'example2.com'; sub_filter_once off; sub_filter_types text/html text/css application/javascript image/svg+xml; } # 原有example2.com的所有路由规则保持不变,放在custompage规则之后 location / { # 此处保留你原来配置的example2.com转发规则,比如指向Nuxt本地服务、静态资源目录等 # 示例配置:proxy_pass http://127.0.0.1:3000; } }
配置逻辑说明
^~ /custompage是前缀匹配规则,优先级高于普通正则匹配和根路径匹配,能保证所有以/custompage开头的请求都走代理逻辑,不会落到example2.com自身的服务上。- 配置
proxy_set_header Host example1.com是为了让example1.com的服务正确识别请求域名,返回对应站点的内容,避免出现域名不匹配的报错。 sub_filter相关配置会自动替换返回页面、脚本、样式中的example1.com域名为example2.com,保证页面引用的静态资源、接口请求都在example2.com域名下发起,不会出现跨域或者跳转到example1.com的问题。绝大多数默认安装的Nginx都自带ngx_http_sub_module模块,不需要额外编译。
生效操作
配置修改完成后,先执行nginx -t检查配置语法是否正确,确认无报错后执行nginx -s reload重载配置即可生效,重载过程不会中断现有站点服务。
内容的提问来源于stack exchange,提问作者Evgeny Anisimov
相关产品推荐
相关产品推荐

