我有一台运行 nginx 的 ec2 机器。它有很多项目,我通常通过以下方式访问它:
https://ai.mydomain.com/myproject
其中一个项目正在独立出来。假设 IP 是 xxx.yyy.aaa.bbb,我该如何让 godaddy 指向那里?
我具体怎样才能得到http://myproject.com指向 -> xxx.yyy.aaa.bbb/myproject
另外,如果我有一个 letsencrypt 证书https://ai.mydomain.com那么,我怎样才能在机器上为不同的域获得两个证书?
答案1
假设 godaddy 指的是 dns 服务,这是不可能的,因为它根本不是 dns 协议的一部分,并且在堆栈的那个级别上没有意义。
您需要的是反向代理或 CDN。反向代理代表您发出请求,并具有其他功能,例如重写请求路径,或根据某些规则联系多个来源。所有这些都是可能的,因为它在 http(s) 级别运行,但隐藏了原始服务器作为实现细节。
一个这样的 cdn 是 amazon cloudfront。在那里可以指定源路径,然后 cloudfront 会将该路径附加到所有请求中。
考虑到您已使用 lets-encrypts 标记了问题,我想指出,aws cloudfront 不需要该功能。AWS 可以为您生成一个证书,供您在 cloudfront 上使用。除非您的流量很大,否则费用相当便宜,每月只需几美分。
答案2
如果这对将来的某人有帮助,我使用 nginx 解决了这个问题:
具体来说:
- 让你的 DNS 将两个域名指向你服务器的同一个 IP
- 设置两个 nginx 服务器块:一个用于 domain1.com,另一个用于 domain2.com。这些服务器块应指向其根文件夹的不同位置。
- 如果您在某个端口(例如 3000)上运行 react、angular 等,请让第二个服务器阻止代理将所有内容通过默认 / 位置或某个自定义位置传递到该端口。
我大致遵循了这篇文章:
https://ubiq.co/tech-blog/configure-multiple-host-names-nginx/