我今天来是因为,作为一名开发人员,我觉得我必须知道如何配置这些东西,但是,我遇到了困难,我不确定为什么。
我有 4 件东西,比如说:
- API(
www.api.example.com
) - Web 应用程序 (
www.player.example.com
) - 展示网站 (
www.example.com
) - GitLab (
www.gitlab.example.com
)
为了实现这个目标,我从Obambu购买了一个虚拟服务器,还从OVH购买了一个域名。
但是,主要的问题是,首先,我无法从 (我的服务器 IP:端口) 重定向www.api.example.com
,192.0.2.89:1234
我搜索过,但似乎没有这样的选项......
然后,我首先做的是安装 GitLab 并禁用 Apache2(因为我不确定是否理解它的要点......并且因为它们使用相同的端口)。
为了访问我的 gitlab,我输入了https://www.gitlab.example.com
,但它只在 Safari 中有效,在 Chrome 中无效。我在网上看到这是因为 SSL 认证,但又一次,它不起作用......
运行 gitlab-ctl reconfigure 时出错:
letsencrypt_certificate[gitlab.example.com] (letsencrypt::http_authorization 第 3 行) 发生错误:RuntimeError: acme_certificate[staging] (/opt/gitlab/embedded/cookbooks/cache/cookbooks/letsencrypt/resources/certificate.rb 第 20 行) 发生错误:RuntimeError: [gitlab.example.com] 域 gitlab.PROJECT.com 验证失败
第三,我不太明白的是,如果你不能重定向到某个端口,你是否需要多个服务器?另外,我不太清楚的另一点是 Apache2..它对我想要实现的目标有用吗?因为最后,我不想调用某样http://www.example.com:8079
东西,又http://www.example.com:8083
调用其他东西..我真的想遵循我上面写的 4 个不同的子域 :/
编辑1
好的,首先,我要感谢您的回答。现在,根据您的回答/评论和其他一些回答/问题,我觉得最好的选择是:
www.example.com:8080
(展示网站)
www.example.com:8081
(gitlab)
www.example.com:8082
(api)
www.example.com:8083
(webapp)
这有意义吗?
答案1
如果你真的想把所有这些都放在一台服务器上,你可以考虑使用信噪比。正如 ETL 所建议的那样,您可以在这里使用 NGINX。如果您不熟悉 Docker,您可以只在该服务器上托管服务,但为每个服务使用唯一的端口,然后配置 NGINX 来处理 SNI部分和疏导交通到达另一个端口。
你真的应该尝试将其分开,如果我是你,我会考虑执行以下操作之一:
- 将多个较小的实例分配给单独的服务
- 按照 ETL 的建议将其放入容器中
- 将一些任务卸载到托管服务,例如 AWS ApiGateway,而不是在本地托管您的 API,以及使用 CodeCommit 而不是 Gitlab。
答案2
我将在单独的 Docker 容器中运行所有这些,并运行一个 NGINX 或 Apache httpd 容器,该容器将监听端口 80/443 并代理到适当的服务。