请问一个二级域名如何配置可以访问多个 http 服务?

1 天前
 maninnet

我手上只有一个二级域名 sub.abc.com ,但我有一个 alist 和 nas 的 http 服务想通过这个二级域名进行访问,比如 sub.abc.com/alistsub.abc.com/nas 分别访问 alist 和 nas 的管理后台,我尝试通过 nginx 配置 location 的 rewrite 和 sub_filter 都没办法解决,请问有什么解决办法吗?

4193 次点击
所在节点    NGINX
77 条回复
dode
1 天前
建议二选一修改路径,不好改的直接使用 sub.abc.com ,好改的使用 sub.abc.com/alist
zxabition
1 天前
让提供域名的人将 *.sub.abc.com 解析到你的机器,你再加一层子域名不就行了。。。

alist.sub.abc.com 指向 alist

nas.sub.abc.com 指向 nas



题外话:推荐使用 zoraxy 。nginx porxy manager 的 aems.sh 我用着有些问题,证书申请不下来,zoraxy 没啥问题。

另外,zoraxy 资源占用还小一些。
slowhand
1 天前
location ^~ /api {
proxy_pass http://127.0.0.1:8085;
proxy_set_header Host $host;

查了下自己的配置,不知道这个$host 改了有没有效?
akabk
1 天前
不知道你是怎么查的,至少 AList 的官方文档有说明。

将 site_url 设置为 https://nn.ci/alist 或者仅/alist, 然后重启 alist
location /alist/ {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Range $http_range;
proxy_set_header If-Range $http_if_range;
proxy_redirect off;
proxy_pass http://127.0.0.1:5244/alist/;
# the max size of file to upload
client_max_body_size 20000m;
}
maninnet
1 天前
感谢各位解答,我在尝试的时候就意识到需要后端配合了,所以用了 sub_filter 做了部分替换,但是没有办法根本解决。
@zxabition 用 3 级域名的话配合 nginx 可以实现吗?
likai
1 天前
proxy_pass 转发
zxabition
1 天前
可以的,nginx proxy manager 本质上也就是个 nginx+自动配置,

我用三级域名+nginx proxy manager 实现过,不同域名跳转不通页面。

例如 hz.xxxx.xx *.hz.xxxx.xx 解析成同一个 ip ,然后 qbit.hz.xxxx.xx 配置反代理的 qbit 。pbh.hz.xxxx.xx 反代的 peerbanhelper ,都能正常使用(当时我用的 nginx porxy manager )
lao66
1 天前
加端口号不行?
maninnet
1 天前
@zxabition 那是需要配置一个*.sub.abc.com 的 ip 指向我的机器,后面 3 级域名的命名都在 nginx 配置就可以了吧?
maninnet
1 天前
@lao66 可以,但是这个域名是备案过的,端口也不好寄
maninnet
1 天前
@akabk 没有看过文档…我试一下,不过还是没有解决跟其他服务共存的问题。
zxabition
1 天前
@maninnet 是的。

https://img.picui.cn/free/2024/12/03/674e7c3e4679a.png

不会上传图,凑合着看吧
cpstar
1 天前
少用路径反代,如果下游系统用了绝对地址,那就是恶心他妈给恶心开门。
shalingye
1 天前
最近做过,放弃吧,设置多个子域名对应不同服务,js 或者 python 随便写的服务没办法走域名路径的
iorilu
1 天前
那就用三级域名阿, 有什么区别吗

都是给开发人员用的, 又不是让用户用
shalingye
1 天前
一个域名而已,值多少钱?自己用的买个 6 块的 xyz ,时间宝贵杜绝浪费
qfchannel
1 天前
nas alist……随便找个免费的垃圾域名挂了不就完了,这么折腾干啥,自用也想那么讲究为啥不直接买个自己的域名
pkoukk
1 天前
用不同的端口就行,本身家宽开 80 和 443 就是作死行为
sub.abc.com:5000 -> NAS
sub.abc.com:5244 -> ALIST
azc1NDk5OTgwMA
1 天前
之前搞反代的时候上网找了资料,如果是前后端路径写死的话得用 location + rewrite ,但是反代的一多就乱起来了,最后还是用了 subdomain
TomCN
1 天前
我之前用笔记本装过一个飞牛 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 同时在一个浏览器中访问,每次访问另一个站点需要先使用路径切换一下,两个站点的路径不能起冲突

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

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

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

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

© 2021 V2EX