Discourse HTTPS Web Socket

嘿,

有人能指导或提供如何在 Discourse 中设置带 HTTPS 的 WebSocket 的示例吗?

简单的 HTTP 可以工作,但我需要通过 HTTPS 进行。

FWIW,正如我从你的其他帖子中读到的,这可能值得一试

不是的,正如我所说,我在 80/443 端口上运行其他网站都没问题,我已经在使用 LiteSpeed 运行网站,甚至邮件服务器也没有被阻止。我也尝试过使用 8443 端口,但没有任何反应。通过 Websocket,我至少可以在 HTTP 上运行它,但由于 HTTPS 上的混合内容而导致其损坏。

Discourse 不支持 80/443 以外的任何端口组合。

Discourse 可能不支持,但 Docker 支持,但我仍然可以通过套接字将其传递给外部 Nginx。

这超过了 8080。

我唯一的问题是,我似乎无法以任何方式让 HTTPS 工作。

这就是为什么我说 Discourse 不支持 80/443 以外的任何端口。

如果你真的想尝试任何其他组合,后果自负。

1 个赞

在我看来,这真的很愚蠢。人们通常在同一台服务器上运行多个服务,而你却在限制用户这样做。此外,docker 容器通常不是单独放在同一台服务器上的。你似乎只是因为不想支持默认端口以外的其他端口,而迫使其他人购买单独的服务器。

Literally thousands of people host other services on the same server as discourse. There are ways to do this. If you do your research, it is a very well supported usecase. You need to put it behind a reverse proxy to achieve it.

Here is one way of doing it Run other websites on the same machine as Discourse

I have my public discourse sandbox hosted on a NUC which hosts multiple other services behind Nginx Proxy Manager but that’s my way of doing it. It isn’t officially supported but I know my way around it.

1 个赞

我也尝试过,但效果不佳。无论如何,既然如你所说,有成千上万的人这样做,那么在这种情况下,我完全看不到支持的意义。因为在 Github 或 Wiki 上都没有明确的步骤来使其正常工作。只有直接的 80/443 选项,它就像一个单一的服务。

您需要一个反向代理,例如 如何在带有现有 Apache 网站的服务器上设置 Discourse

1 个赞

但我实际上并没有运行apache,我更需要nginx和litespeed,但无论如何,直接使用其他端口会更简单,然后我们可以轻松地将其传递给其他Web服务器。

不,我一点也不懂 Docker。但当我以前在同一个 VPS 上运行 Discourse,并且在 Discourse 之前有 Nginx 和 Varnish 时,我使用 sock 没有问题。但那不一样吗?

现在我的 Discourse 在一个与 Nginx/Varnish 不同的 VPS 上,所以我不能使用套接字。这就是为什么 Varnish 将所有人发送到端口 82,然后从那里发送到 Discourse 的 VPS。这就是为什么我有:

 expose:
  - "82:80"

但这是否与 Discourse 只能使用端口 80/443 完全不同?

然后你可以找到 nginx 指南或以此为例。

这不会发生。你需要一个支持 https 的反向代理。

2 个赞

我找到了一个方法可以运行,毕竟并不难,你可以运行 Discourse 在任何你想要的端口。

对。如果你有 Varnish 在前面,你可以让 Discourse docker 容器打开 82 端口(或任何端口),这样 URL 就是一个普通的 https URL。只要 Varnish 管理 https 证书,你应该就能按预期进行。

1 个赞