我需要实现服务器监听 80 端口,但返回的链接为 HTTPS。如何解决这个问题?
我目前的配置如下,所有链接都是 HTTP:
expose:
# - “443:443” # https
- “80:80” # https
我尝试将其重命名为 443,但失败了。
我需要实现服务器监听 80 端口,但返回的链接为 HTTPS。如何解决这个问题?
我目前的配置如下,所有链接都是 HTTP:
expose:
# - “443:443” # https
- “80:80” # https
我尝试将其重命名为 443,但失败了。
我觉得这恐怕做不到。
Let’s Encrypt 非常严格,出于安全考虑,我认为他们不会为 443 端口以外的任何端口提供 SSL 证书。
也许可以开启 强制 HTTPS 站点设置?
您能解释一下为什么需要做这件事吗?
有一台内部服务器运行着 Discourse,并在 80 端口开放监听。当访客访问该站点时,页面会自动跳转至 HTTPS,但所有链接仍使用 HTTP。我无法控制此基础设施,除了 80 端口外,没有其他可用途径。
恐怕在我的情况下这行不通,因为我实际上并不使用 https。
我可以将其关闭,但在我看来,这并不能解决问题,因为由于 SSL 的限制,无法在端口 80 上启用 HTTPS。
Discourse 不支持在非标准端口上运行。
这包括在端口 80 上运行 HTTPS。
您的意思是,您在其他地方部署了反向代理,负责为所有站点(包括 Discourse)处理 SSL 吗?
你试过吗?
那你现在想做什么?
这是否意味着你希望页面中提供的链接使用 https,而 https 的处理是由其他方式完成的?
抱歉,我还没有完全理解您的帖子。
您说过:
我需要配置服务器,使其监听端口 80,但提供 https 链接。我该如何解决这个问题?
如果我的理解正确,您希望将所有端口 80 的 HTTP 流量重定向到端口 443 的 HTTPS,并且不希望端口 80 直接处理 HTTPS 流量,而只是将端口 80 重定向到端口 443。
如果是这样,大多数 Web 服务器都是这样配置的;例如,如果您使用 LetsEncrypt 在 Apache2 或 nginx 上配置端口 443 的流量,LetsEncrypt 会询问您是否要设置此重定向,并自动为您完成。
正如 @Falco 所问,您的确切配置是什么?您是否在 Discourse 前面运行了像 nginx 或 Apache2 这样的 Web 服务器作为反向代理?
如果是这样,当您在 nginx 或 Apache2 上设置 LetsEncrypt 时,LetsEncrypt 的设置软件会自动为您配置“将所有 HTTP 重定向到 HTTPS”(如果在配置对话框询问时选择“是”)。
嗯,我的 Discourse 输出流始终是 80 端口。我无法监听其他端口,而且也没有关于 Let’s Encrypt 的相关配置。
服务器:nginx/1.14.1
但我无法访问它
https://forum.qpay.uz/
你可以看到所有链接都是 http
@anton21m,这是一个外观简洁的新 Discourse 站点。
我们现在完全理解您的情况。谢谢。
如果您无法访问 nginx 或 system,则需要联系您的系统管理员安装 LetsEncrypt 并为您的站点添加 SSL。
如果您打算继续使用该托管服务商且无法访问 nginx,这确实是您唯一的选择。
很抱歉告知您这一点。或许可以考虑更换其他托管服务商?
您所提到的那个“理想解决方案”,正是我们之前建议您的做法;例如,将您的 Web 服务器配置为将 80 端口的流量重定向到 443 端口。
该方案需要您修改 Web 服务器,这与您之前收到的建议一致。
因此,@anton21m,我们似乎开始原地打转了……
但为了您能成功,让我再为您重复一次
:):
您需要能够访问 Web 服务器,并将其配置为将 80 端口的流量重定向到 443 端口,同时需要在同一 Web 服务器上设置 SSL 证书。如果您的托管服务商不允许这样做,那么您需要更换托管服务商。
您可以考虑使用 Discourse 推荐的托管服务商之一,因为他们可以轻松为您完成所有这些配置。
希望这对您有帮助。
推荐:
您应该可以通过启用 Discourse 的 force_https 站点设置来实现这一点。