请问一个二级域名如何配置可以访问多个 http 服务?
我手上只有一个二级域名 sub.abc.com ,但我有一个 alist 和 nas 的 http 服务想通过这个二级域名进行访问,比如 sub.abc.com/alist 和 sub.abc.com/nas 分别访问 alist 和 nas 的管理后台,我尝试通过 nginx 配置 location 的 rewrite 和 sub_filter 都没办法解决,请问有什么解决办法吗?
location + proxy_pass
不要 subfolder 容易出问题,建议 sub domain 。nginz 配不来可以使用 Nginx proxy manager ,比较无脑
我就是这样,不行,首页可以,后面的请求 host 还是 sub.abc.com ,filebname 还是原来的相对路径,我通过 sub_filter 替换,部分可以,但是动态生成的路径就无能为力了。
我只有一个二级域名啊,这个域名不是我的,是其他人提供给我的,我没有权限配置 dns 解析。
我也想知道,以前自己也想搞但没搞好,最后还是用了不同的域名来解决
你请求没办法改的话,无解。我遇到过这种的,基本上要么改代码,要么多域名。
网上查了挺久,问了几个 ai 都解决不了,上来问问有没有人这么配置过的…难道大家都没有这种需求吗?
代码是改不了的…只能麻烦别人配置多个域名了,改 IP 也很麻烦。
sub folder 方式需要下面的程序或者至少它用到的 web 框架按照“我知道自己有可能被苦逼的主人放在一个 sub folder 下面,所以有配置选项让我按照 sub folder 来生成 URL”设计过才行,并不是前端反代做了改写就能搞定的
一般都是不同的二级、三级甚至更多级域名对应不同的后端服务
sub.abc.com/alist 和 sub.abc.com/nas 这种都需要 alist 和 nas 应用本身支持 sub url 的,但是往往不是所有的应用都支持
s2.loli.net/2024/12/03/c7VgKeHizd6E38D.png
如图
路径改写不了就试试不同端口吧,反正内部服务自己用不讲究的
通用的这些,如果配置完了还不行,一般就是 JavaScript 里路径写死了类似 “/api”,“/public” 之类的,如果你不改源码,那就看看这些服务里的 js 文件,具体问题具体分析,改 js 文件。
改完一处,部署后发现有那个路径又不对了,再接着改。
试试不同端口吧,反正家用也用不了 80 端口。我 nas 上所有服务都是同一个域名+不同端口区别。
xx.oo/port------------------8080/xxxx 反代到 127.0.0.1:8080/xxxx
按 op 描述的场景问题,端口应该正解
这是正解,得应用本身支持才可以的
OP 没做过 web 开发吧,大多数的系统都不支持调整路径的。
说过故事吧:
领导:李工,你们团队开发系统测试都过了,准备上线。哦,上线的路径是 /某某路径/
李工:啊! 不行。这个需求为什么不在开发前提出来,现在都已经开发测试完成了,改路径要重新返工,工作量巨大,还要重新测试,开发+测试最起码要 2 周时间。
领导:你们开发的时候就要考虑部署到不同的路径,为什么要返工?
李工:你看系统需求文档里就没有这条啊,现在说了,我们要检查每个页面程序,几十万行代码重新过一遍,最起码要 3-5 天,然后再全功能测试,再修 bug ,再测,2 周都很紧张,要天天加班。
领导:不行,最多 3 天。
李工:要尊重科学啊,工作量这么大,不可能完成啊。要么,换成子域名不改路径,今天就能上线。
领导:子路径和子域名有什么差别啊?叫网管部的小张过来
小张:子路径和子域名没啥区别,我 dns 配置一下,几分钟搞定。
领导:…
(大多数 web 系统在开发前就没规划自定义路径,开发后要自定义路径,修改工作量大,之后基本都是不了了之)
#3 那得前端项目做相应的配置,不是纯代理部分能解决的
建议二选一修改路径,不好改的直接使用 sub.abc.com ,好改的使用 sub.abc.com/alist
让提供域名的人将 *.sub.abc.com 解析到你的机器,你再加一层子域名不就行了。。。
alist.sub.abc.com 指向 alist
nas.sub.abc.com 指向 nas
题外话:推荐使用 zoraxy 。nginx porxy manager 的 aems.sh 我用着有些问题,证书申请不下来,zoraxy 没啥问题。
另外,zoraxy 资源占用还小一些。
location ^~ /api {
proxy_pass 127.0.0.1:8085;
proxy_set_header Host $host;
查了下自己的配置,不知道这个$host 改了有没有效?
不知道你是怎么查的,至少 AList 的官方文档有说明。
将 site_url 设置为 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 127.0.0.1:5244/alist/;
# the max size of file to upload
client_max_body_size 20000m;
}
感谢各位解答,我在尝试的时候就意识到需要后端配合了,所以用了 sub_filter 做了部分替换,但是没有办法根本解决。
用 3 级域名的话配合 nginx 可以实现吗?
proxy_pass 转发
可以的,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 )
加端口号不行?
那是需要配置一个*.sub.abc.com 的 ip 指向我的机器,后面 3 级域名的命名都在 nginx 配置就可以了吧?
可以,但是这个域名是备案过的,端口也不好寄
没有看过文档…我试一下,不过还是没有解决跟其他服务共存的问题。
是的。
img.picui.cn/free/2024/12/03/674e7c3e4679a.png
不会上传图,凑合着看吧
少用路径反代,如果下游系统用了绝对地址,那就是恶心他妈给恶心开门。
最近做过,放弃吧,设置多个子域名对应不同服务,js 或者 python 随便写的服务没办法走域名路径的
那就用三级域名阿, 有什么区别吗
都是给开发人员用的, 又不是让用户用
一个域名而已,值多少钱?自己用的买个 6 块的 xyz ,时间宝贵杜绝浪费
nas alist……随便找个免费的垃圾域名挂了不就完了,这么折腾干啥,自用也想那么讲究为啥不直接买个自己的域名
用不同的端口就行,本身家宽开 80 和 443 就是作死行为
sub.abc.com:5000 -> NAS
sub.abc.com:5244 -> ALIST
之前搞反代的时候上网找了资料,如果是前后端路径写死的话得用 location + rewrite ,但是反代的一多就乱起来了,最后还是用了 subdomain
给大家介绍两个教程,一个是关于Socket编程的,一个是关于HTML5的。 关于Socket,相信大家都知道这个是用来做TCP/IP网络编程的,其由FreeBSD引入,现在,只…
xkcd对于经常浏览国外网站的朋友一定不会陌生。不过,还是先让我来介绍一下xkcd(维基百科词条)。这是一个漫画网站,它主要是发布一些很简单的随手画的漫画,它主要有四种体裁——…
测试过程 因为我的两个帖子 /t/838609 /t/846741 V 友们的意见都不太统一,刚好看到今天有人又在争论这个问题,于是我打算看看各公司 API 的接口设计 Yo…