我想做的是在网站离线时,例如在重建过程中,显示一个“本网站正在维护中”的页面。
这个主题基本上是我想要做的,但似乎需要一个非标准的设置。对于标准安装,有没有更简单的方法可以做到这一点?谢谢!
我想做的是在网站离线时,例如在重建过程中,显示一个“本网站正在维护中”的页面。
这个主题基本上是我想要做的,但似乎需要一个非标准的设置。对于标准安装,有没有更简单的方法可以做到这一点?谢谢!
目前还没有这样的方法。
实际上,此过程使用了被认为是“标准安装”(即使用官方 Discourse Docker 指南),然后将 Nginx 重新部署到容器外部。
该过程乍一看似乎很吓人,但实际上并非如此,如果您愿意,我可以为您提供帮助。
这不是我想要的答案,但我仍然感谢您清晰的答复。
我不太担心这个过程,更担心这种设置在将来安装新插件等简单操作时是否需要任何额外的考虑。或者它基本上是一次性设置好就不用再管了?
自从我在 2020 年为此添加 NGINX 以来,我不得不两次编辑过它的配置。两次都是在更新 Discourse 中的限制后调整与上传大文件相关的设置。
使用外部 NGINX 提供静态页面并充当 Discourse 的反向代理,一旦设置正确,通常不需要进行更改。
请注意,外部 nginx 除了提供静态错误页面之外,还带来了另一项宝贵的价值:正确归属 IPv6 用户的源 IP 地址。如果您的论坛可以通过 IPv6 访问,并且您没有使用外部 nginx 配置,那么所有通过 IPv6 访问您网站的用户都将显示为来自 172.x.y.z 本地地址。当您试图处理垃圾邮件发送者等恶意网站用户时,这毫无帮助!
安装新插件的情况_完全一样_。
我认为这使得更新更容易,因为您知道您的用户会被告知维护信息,并且会等待维护完成。
我想到的您需要确保的一件事是,您已经正确设置了 certbot 来续订您的证书。这内置在不使用外部 nginx 的默认配置中,但如果您使用外部 nginx,您还必须使用外部 certbot,并确保它已设置为续订您的证书。并非所有安装 certbot 的方法都能处理好这一点。
请注意,您询问的文档说:
如果您从软件包存储库安装了 certbot,续订通常会自动进行。否则,请设置一个提醒,在证书过期前运行
letsencrypt renew && systemctl reload nginx.service!
然而,设置提醒并不是一个好方法。您最终会忘记,如果您错过了 letsencrypt 发送的关于证书过期的警告电子邮件,您的网站将无法正常运行。幸运的是,这很容易解决。
如果尚未设置自动续订,请按以下方式进行。
使用以下内容创建文件 /etc/systemd/system/certbot.service:
[Unit]
Description=Certbot
Documentation=file:///usr/share/doc/python-certbot-doc/html/index.html
Documentation=https://letsencrypt.readthedocs.io/en/latest/
[Service]
Type=oneshot
ExecStart=/usr/bin/certbot -q renew
PrivateTmp=true
使用以下内容创建文件 /etc/systemd/system/certbot.timer:
[Unit]
Description=Run certbot twice daily
[Timer]
OnCalendar=*-*-* 00,12:00:00
RandomizedDelaySec=43200
Persistent=true
[Install]
WantedBy=timers.target
然后告知 systemd 新文件。
# systemctl daemon-reload
# systemctl enable --now certbot.timer
如果您使用两个容器的设置,停机时间不到一分钟,您确实不需要这样的页面。
经过一番搜索,我清楚地发现,维护两个容器比维护 Nginx 的工作要求高得多。至少以我目前的技能水平来看是这样。
啊。我明白了。从我的角度来看,这几乎是一样的,只是你确实需要注意何时需要更新日期容器,虽然这不常发生,但你确实需要注意。当这种情况发生时,网站会暂时无法访问。
这也是事实。总是在权衡——论坛因更新/升级而停机的时间与单独维护容器所需的时间(尤其是当你(即我)搞砸一切并开始尝试寻找修复方法时,论坛同时停机
)
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.