oldman
(chris)
1
大致来说,我遇到的情况如下。
我有两台硬件服务器。一台运行 Unraid,另一台用于运行 ESXi 虚拟机。
Unraid 服务器上运行着 Nginx 反向代理管理器。我在 ESXi 机器上有一台 Ubuntu 18.04 虚拟机。在安装过程中,系统提示我端口 80 已连通,但端口 443 未连通。有人使用过类似的配置吗?
在反向代理中,我已将域名配置为使用 SSL,并设置在端口 80 上。只是我对相关配置还不够了解(将此作为学习过程),无法弄清楚如何让两者协同工作,从而成功安装并运行 Discourse。
谢谢。
更新:我已经解决了问题。指引我找到正确方向的链接如下:
https://www.digitalocean.com/community/tutorials/how-to-install-discourse-behind-nginx-on-ubuntu-14-04
1 个赞
neounix
(Dark Matter)
2
仅供参考,
下一步,您可以考虑将代理改为与 Docker 容器中的 Unix 域套接字通信。
这种设置提供了更大的灵活性,因为您可以简单地从容器外部创建指向容器内部的符号链接,轻松在不同容器之间切换,无需任何停机时间,也无需重启 Nginx。
例如(在 Linux 上有效,macOS 上不适用):
Unix 套接字可能位于此处(容器视角),示例如下:
/shared/mycool.discourse.sock
容器外部:
ln -sf /var/discourse/shared/socket-only/mycool.discourse.sock /tmp/mycool.discourse.sock
这样,您的外部 nginx 反向代理服务器即可指向:
/tmp/mycool.discourse.sock
假设您需要添加一些插件并重新构建。
您可以使用 /shared/socket-only2 进行重新构建(只需修改一个简单的 yml 文件),要切换到新容器,只需执行:
ln -sf /var/discourse/shared/socket-only2/mycool.discourse.sock /tmp/mycool.discourse.sock
(或者将其放在 /var/run 或其他位置……)
这种方法运行非常顺畅,您可以在几毫秒内在不同容器之间来回切换,无需重启 nginx 来重新映射 TCP/IP 域套接字。
我已对此进行了完整测试,效果完美且流畅。
该方法在 Apache2 上(几乎)也适用,但在 Apache2 中无法使用符号链接,必须在 Apache2 站点配置中使用容器的完整路径,因此切换时需要重启 Apache2。不过,既然您是使用 nginx 的人,这在容器外部将会非常简单且顺畅。