【问题标题】:Why run Varnish on port 80 for an HTTPS only setup?为什么要在端口 80 上运行 Varnish 以进行仅 HTTPS 设置?
【发布时间】:2020-04-11 13:11:31
【问题描述】:

在我见过的几乎每个使用 nginx 和 SSL 支持设置 Varnish 的示例中,设置是 Varnish 在端口 80 上运行,nginx 在端口 443 上用于 SSL 终止,而 nginx 在另一个端口上运行,执行与后端。

鉴于现在大多数网站将端口 80 重定向到 443,让 Varnish 在端口 80 上运行有什么优势?

为什么不让 nginx 在端口 80 上运行,对 HTTPS 版本执行 301,在端口 443 上运行的 nginx 执行 SSL 终止并代理到在不同端口上运行的 Varnish,而 nginx 再次运行在另一个端口在做实际工作?

HTTP: nginx [80] (301)

HTTPS:nginx [443] Varnish [6081] nginx [8080] 后端

我真的看不出将 Varnish 放在前面的 80 端口上只是为了进行重定向。除非,重定向和向 URL 添加不必要的端口号存在一些问题?也许添加 3 个 nginx 服务器块会为设置添加“更多”工作,但随后必须配置 Varnish 以重定向端口 80,除非它是内部的,否则似乎是“更多”工作。

额外问题:为什么 Apache 已经在使用 nginx 并且反之亦然?它们都可以处理 SSL 终止和代理。

【问题讨论】:

    标签: nginx https varnish


    【解决方案1】:

    我同意“为什么不”:

    HTTP: nginx [80] (301)

    HTTPS:nginx [443] Varnish [6081] nginx [8080] 后端

    至于为什么:

    HTTP: Varnish [80] (conditional 301, using VCL)
    
    HTTPS: nginx [443] <> Varnish [80] <> nginx [8080] <> backend
    

    答案是:

    • 遗留原因。这只是进入“条件 HTTPs”世界的方式(可以让网站在 HTTP 和 HTTPs 版本中运行,或者根本没有 HTTPs 版本),这只是几年前,在谷歌之前,作为 web垄断者,并没有坚持所有网站都具有 HTTPs 或担心搜索排名较差。 相对最近,LetsEncrypt 允许所有人使用免费证书,而上述来自 Google 的要求使得许多网站都使用这些证书。 Varnish 设置的网站/教程,根本没有选择/调整端口,因为不需要调整。
    • 可扩展性。在“单一服务器”设置之外思考。当您决定构建一个 Varnish-es (CDN) 堆栈时,将“主” Varnish 保留在端口 80 上会更有意义。(外部/边缘 Varnish 实例将与主 Varnish 对话,而不是与主后端,用于“缓存缓存”之类的东西)。 edgemain 之间的流量不安全,但不会受到加密的性能损失。

    【讨论】:

    • 我现在找不到帖子,但是我确实读到了一个“技巧”是让 nginx 在端口 80 上绑定到外部 IP 和 Varnish 绑定到端口 80 localhost,以避免在重定向期间将非端口 80 端口号附加到 URL 的问题。这仍然有效吗?
    • 将来源添加到上述评论:danielmiessler.com/blog/…
    • 是的,我认为这是有效的。您可以让应用程序在 不同 接口的同一端口上侦听(在本例中为本地主机和外部),因此有助于避免重定向问题。尽管使用this 很容易解决它。我认为这仍然更好(在同一个端口上监听),因为 AFAIK 你必须在 NGINX 或 Varnish 中指定外部 IP(接口)(取决于你想要在前面),并且配置中的硬编码 IP 并不完全好东西……
    【解决方案2】:

    我认为我们可以简化一下: HTTPS:nginx [443] Varnish [6081] 后端

    让 Varnish 做缓存,避免额外的 Nginx 层。

    更简化: 挂钩 [443] 清漆 [6081] 后端

    搭便车:https://hitch-tls.org/

    【讨论】:

    • 需要后端前的额外nginx才能与PHP-FPM接口
    猜你喜欢
    • 2023-04-02
    • 2015-08-17
    • 2012-02-12
    • 2013-10-24
    • 2011-06-16
    • 2023-03-28
    • 2016-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多