有偿求助: nginx 域名隐性(地址栏域名不变)跳转

145 天前
 powerman

跪求大神,帮助实现一个关键功能:域名隐性跳转(也称为域名掩码或隐形重定向)。具体需求如下:

隐性跳转实现: 所有输入的域名在用户浏览器地址栏中保持不变,但实际内容从目标 URL 加载。 需要处理的域名除了数字英文,还包含特殊字符(如 emoji 、中文、日文等)。 例如,当用户在地址栏访问 1.aaa.com ,服务器基于 API 查询“1.aaa”指向的页面如“bbb”,则跳转目标 URL 为 ccc.com/bbb ,但是地址栏域名不变仍显示 1.aaa.com 。 其他都实现了,就是这个隐性跳转搞不定,ccc.com 不允许跨域访问,没办法代理它的内容。

技术要求: 服务器端技术:nodejs Nginx pm2 代理目标 URL 是基于 API 指向的页面。

4572 次点击
所在节点    Node.js
77 条回复
EmbraceQWQ
144 天前
@zsh2517 太可惜了,我在隔壁还想水一波
buffzty
144 天前
我上面 base64 是个网站 已经把本站给镜像了,配置一下 nginx 和 lua 脚本,几行代码就搞定,可以用子路径反代任意域名 支持绝大多数功能 包括 cookie token.
比如我的网站 a.com, 你访问 a.com/b.com 就是 b 网站,访问 a.com/c.com 就是 c 网站. 此时在 b c 网站点站内链接不会改变 a.com. 如果要子路径不显示都可以 比如 a.com 返回的东西就是 b.com
powerman
144 天前
可是我的需求反代的域名和目录都是不固定的,能做吗。
root71370
144 天前
@buffzty 很强,“比如 a.com 返回的东西就是 b.com” 这个可以做个效果看下吗
seeyoy
144 天前
nginx
proxy_pass 后
sub_filter 了解一下,够用了,可以替换内容
buffzty
144 天前
@powerman 用一个正则不就反代任意域名 任意路径了,你把你实际需求说下 只要不违法我直接把技术告诉你,不要你钱,网上跟你要钱的绝大多数都是骗子.

@root71370 h5 的 push history 特性啊,这还用做吗,如果需要刷新还有效 加个 local storage
powerman
144 天前
@buffzty 方便留个联系方式吗或者 gmail
buffzty
144 天前
@powerman 直接说实际需求吧,不私,只要不违法我会把方法贴上来
powerman
144 天前
@buffzty

正经小工具。

[需求补充如下]

我的网站有点类似镜像站 mirror.com
源站是 example.com

当用户访问 tom.mirror.com ,我用 js 去查询 API:比如 tom.mirror 返回的值是 uid1 ,那对应的源站的二级目录是 example.com/uid1
现在需要实现的功能是 用户访问二级域名 tom.mirror.com ,实际指向 example.com/uid1 ,但浏览器地址栏仍然显示 tom.mirror.com

tom 和 uid 这些都是会变的,不知道这样讲能理解吗

(特别感谢 V 友 @Jianrry 帮我总结上述需求)
powerman
144 天前
@buffzty

现在是这样配置的 nginx

server {
listen 80;
server_name *.mirror.com;

location / {
proxy_pass http://localhost/:3000;
proxy_set_header Host $host;
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;
}
}
buffzty
144 天前
用户访问 tom.mirror.com 时 应该是后端查询该代理到哪个 url
你这个是一对一的 直接反代都足够了,你反代的时候 tom.mirror.com -> example.com, 再重定向到 tom.mirror.com/uid1
接着修改 反代 resp header 和 body, 遇到 html,js,css 文件修改 example.com url-> tom.mirror.com, 再在 html 文件 顶部注入 js 代码 hook, 比如 hook 网络请求 将所有 example.com->tom.mirror.com.其他的遇到啥 hook 啥 可以 hook 到你跟源站一样 除了域名
powerman
144 天前
@buffzty 不太理解,我这个 tom 是动态的,单一的反代好像搞不了
dallaslu
144 天前
@root71370 “申请个域名就可以直接套”,是这样的没错。比如 hostloc.com 就太多套壳站
dallaslu
144 天前
如果你在用 Cloudflare ,那么可以用 Cloudflare Worker 。跳转规则和页面内容替换逻辑都可以非常简单地用 node 实现。
mlboy
143 天前
vx:bG9zdGRhbmNl
powerman
143 天前
@dallaslu 感谢,我试了一下真的可以隐性跳转了。就是出其他 bug 了😭
ruanimal
143 天前
别自己瞎定义名词,典型的反向代理,但是你可能需要动态配置

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1063331

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX