48 条回复  ·  5981 次点击
TomCN 初学 2024-12-3 12:01:23
我之前用笔记本装过一个飞牛 OS(后面性能不够就没使用了),想过一个方案,使用 Cookie 来标记当前访问的站点,然后每次根据 Cookie 来判断 server { listen 80; server_name example.com; # 处理 /a 和 /b ,设置 Cookie 并重定向到 / location = /a { add_header Set-Cookie "current-site=a; Path=/; HttpOnly; Max-Age=3600"; return 302 /; } location = /b { add_header Set-Cookie "current-site=b; Path=/; HttpOnly"; return 302 /; } # 处理 / location / { # 根据 Cookie 值选择代理目标 if ($http_cookie ~* "current-site=a") { proxy_pass http://localhost:3000/; break; } if ($http_cookie ~* "current-site=b") { proxy_pass http://localhost:4000/; break; } # 如果没有 Cookie ,返回 404 return 404; } } 不知道是否可行,不过有一定的副作用,比如不能 a 和 b 同时在一个浏览器中访问,每次访问另一个站点需要先使用路径切换一下,两个站点的路径不能起冲突
dfdd1811 初学 2024-12-3 12:06:54
我记得之前我捣鼓 list 的时候也想这样,但是他软件不支持再加后缀。很多软件都需要支持才行。所以我现在起服务要么就直接用端口访问,非要洁癖,就单开个二级域名,申请新证书,反正也是自动续期
phenixc 小成 2024-12-3 12:15:13
nas 和 alist 使用端口访问,sub.abc.com 指向 lucky666 所在服务器,使用 lucky666 的 web 反向代理让 sub.abc.com/alist 指向 alist 服务所在地址和端口应该可以解决。不过我更偏向于使用 alist.sub.abc.com
lovelylain 小成 2024-12-3 12:18:02
子路径就这样,要么服务本身支持子路径,要么 sub_filter 替换,为什么会有 sub_filter 这么麻烦的方式,因为没有更好的办法,你都替换了一半而且看到效果了,继续换吧,或者查查服务有没有提供编译或者配置选项支持子路径。
xuanbg 小成 2024-12-3 12:18:15
只有一个二级域名的话,你应该一开始就该规划好子目录,然后再写代码。不然你怎么配置 nginx 都会有一些无解的问题。
Tink 初学 2024-12-3 12:23:14
nginx
zwgf 小成 2024-12-3 12:27:03
用端口
zuotun 初学 2024-12-3 12:29:22
只能再买几个域名或者用端口号区分,你这样做工作量巨大而且很容易出问题。不是大家没有这种需求,而是子域名又不要多花钱,何必做成 All in one 呢? 当然也有解决方案,配合一些奇技淫巧完全可以实现访问同一个网址展示完全不同的页面,但这样搞你肯定是不打算给其他人用了,这样一来还不如改端口号来的方便实在。
InDom 初学 2024-12-3 12:34:24
给一个笨笨的方案,但这个方案可能不能做到同时访问。 使用 service worker 技术,拦截 fetch 请求。 fetch 请求增加一个 header 头,指引 nginx 反向代理到哪个服务。 比如你打开 sub.exmaple.com/nas 后 worker 中记录下当前要访问 nas ,然后跳转回 sub.exmaple.com ,worker 中的 fetch 请求时就带上 nas 的标记,nginx 收到请求后只反向代理到 nas 后端。
duanxianze 小成 2024-12-3 12:38:33
不同的端口反向代理啊
12345
返回顶部