【问题标题】:Linux Varnish Cache Server - Guru Meditation 503Linux Varnish 缓存服务器 - Guru Meditation 503
【发布时间】:2016-12-11 03:39:42
【问题描述】:

我在 Linux 服务器上有 magento 网站(清漆缓存),一些产品详细信息页面显示错误为

错误 503 后端获取失败 Guru Meditation: XID: 98757

我的网站IP是52.163.xxx.xx

请找到以下详细信息并帮助我解决此问题。

/etc/default/varnish

DAEMON_OPTS="-a :8080 \
             -T localhost:6082 \
             -f /etc/varnish/default.vcl \
             -S /etc/varnish/secret \
             -s malloc,256m"

/etc/varnish/default.vcl

backend default{
    .host   = "127.0.0.1";
    .port   = "8080";
}

sudo service varnish restart

  • 停止 HTTP 加速器 varnishd 没有发现 /usr/sbin/varnishd 正在运行;没有人被杀。 [失败]
  • 启动 HTTP 加速器 varnishd [失败] bind():地址已经在使用中 bind():地址已经在使用中 错误:无法打开(任何)接受套接字。

【问题讨论】:

标签: linux magento varnish


【解决方案1】:

一个错误是 Varnish 和您的后端服务器都在同一端口 8080 上运行。你有 2 个选项来解决这个问题:

  1. 最简单明了。调整 Varnish DAEMON_OPTS 以监听端口 80

  2. 如果你让 Varnish 和你的后端服务器在不同的接口上监听,它可能仍然可以在相同的端口上工作:

    • Varnish 通常会监听外部接口。因此,调整您的 Varnish 监听参数以绑定到特定 IP:DAEMON_OPTS="-a 52.163.xxx.xx:8080 ...
    • 将您的后端服务器(Apache、Nginx 等)绑定为仅侦听环回接口 127.0.0.1

您的 VCL 是“空的”,您应该为 Magento 使用相应的插件,该插件将通过为您生成正确的 VCL 文件来确保 Varnish 缓存内容:

  • Magento 1.x:Turpentine 插件
  • Magento 2.x:.. 能够从 Magento 安装的管理后端生成 VCL。

【讨论】:

  • 丹尼尔感谢您的快速回复。我已经安装了松节油插件。它不起作用,而且我已将配置文件路径设置为 {{root_dir}}/varnishimp/default.vcl,但在该目录中没有生成 default.vcl 文件。请指导。
  • 您必须确保您的 Web 服务器有权写入 Magento 安装的 /var 目录。您将什么用于 Web 服务器堆栈?如果是 Nginx + PHP-FPM,那么 PHP-FPM 必须配置为与 Magento 文件的所有者相同的用户运行。
【解决方案2】:

据我了解,您是在同一台 linux 机器上运行 varnish 和后端网络服务器(比如 nginx 或 apache),对吗?

首先,尝试运行这个命令:

sudo netstat -anp | grep LISTEN | grep 8080

并查看8080端口绑定了什么进程,绑定在哪个ip上。

您问题的第一部分表明清漆正在运行,只是无法连接到后端。 但第二部分告诉我你不能开始清漆。 所以请说清楚,也许附上上面命令的输出。

让我们继续第二部分,即清漆无法启动。

我猜你的后端服务器在 8080 上运行,无论是 nginx、apache 等。 毕竟,您的 varnish 后端配置确认了这一点。

检查网络服务器是否绑定在 127.0.0.1 而不是 0.0.0.0 以不允许公共流量直接连接做后端网络服务器。

如果是这种情况,您必须将监听 ip:port 的清漆更改为非冲突组合。

您可以:

  • 将端口更改为 8080,比如说 80
  • 如果您需要公开 8080,请将后端 Web 服务器的端口更改为其他端口
  • 仔细检查您的后端 Web 服务器是否仅在 localhost 上侦听,并将 varnish 绑定到您的公共 ip 而不是 0.0.0.0(默认,表示所有机器的 ips)

您可以通过将主清漆配置更改为:

DAEMON_OPTS="-a 52.163.xxx.xx:8080 \
             -T localhost:6082 \
             -f /etc/varnish/default.vcl \
             -S /etc/varnish/secret \
             -s malloc,256m"

这种情况有一个重要的缺点。如果您以某种方式获得新的公共 ip,您也必须在主清漆配置中更改它。如果这是你可以编码成自动化配方的东西,那应该不是问题。但是,如果您手动管理它,请确保您有非常好的文档实践,否则您将来会寻找幽灵错误。 :)

【讨论】:

  • Daniel V. 更快。并且还具有 Magento VCL 提示的附加值。 :)
  • Kasou.sk 在运行该命令“tcp6 0 0 :::8080 :::* LISTEN 4675/apache2”后。我试过“-a 52.163.xxx.xx:8080”没有变化。
  • 当然,因为 apache2 绑定到所有 ip 上的 8080 端口。您只需将其绑定到 localhost。在您的 apache2 配置中找到任何 Listen 语句(例如,在我的旧 centos 机器上的 /etc/httpd/conf/httpd.conf )并确保没有 0.0.0.0:8080 并且恰好有一行 127.0。 0.1:8080.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-20
  • 2012-09-25
  • 2018-09-20
  • 1970-01-01
  • 1970-01-01
  • 2015-02-28
  • 1970-01-01
相关资源
最近更新 更多