在生产环境中,如果我想用负载均衡器搭配 Discourse,是否必须拥有两个域名?

我对负载均衡器的使用不太熟悉,但这次我真的需要使用它。

假设我的网站叫 badthreadcomments.com。每次用户进入我的网站,他们的请求都会被发送到我在 VPS 上配置的负载均衡器,这个负载均衡器应该将请求发送到托管在同一 VPS 上的 Discourse,然后 Discourse 会响应我的负载均衡器,但是等等,Discourse 生产环境使用文档说:

“Discourse 不能通过 IP 地址工作;您必须拥有一个像 example.com 这样的域名才能继续。”

我的想法是负载均衡器和 Discourse 都托管在同一个 VPS 上,所以我的负载均衡器和 Discourse 之间的通信是 100% 本地的,那么,如果生产环境需要域名,我该怎么办?这里的计划是什么?再买一个域名?如果需要第二个域名,这会不会增加客户端的延迟?

这意味着客户端必须通过域名访问 Discourse。在内部,在最后一个面向客户的反向代理/负载均衡器后面,您可以随心所欲。

1 个赞

那么顺序应该是这样的吗?
badthreadcomments.com > Discourse Docker > Load Balancer > Response

不能是这样的吗?
badthreadcomments.com > Load Balancer > Discourse Docker > Response

我不明白你说的“在最后一个面向客户的反向代理/负载均衡器后面,你可以做任何你想做的事情。”是什么意思。

Discourse 在这方面与其他 Web 应用程序没有区别

graph TD
    User[用户]
    LoadBalancer[负载均衡器]
    WebAppCluster[Discourse Web 应用集群,N 个相同实例]
    Postgres[PostgreSQL]
    Redis[Redis]
    S3[对象存储]

    User -->|请求| LoadBalancer
    LoadBalancer -->|分发请求| WebAppCluster
    WebAppCluster -->|读/写| Postgres
    WebAppCluster -->|缓存| Redis
    WebAppCluster -->|存储静态资源| S3
2 个赞

我建议您了解一下 Nginx Proxy Manager 的工作原理,以加深您的理解。