错误 503 服务不可用 Varnish/Nginx/SSL

错误 503 服务不可用 Varnish/Nginx/SSL

我有一个设置,其中 Nginx 和 Varnish 运行良好。多个网站在一个 VPS 上运行。Nginx 在端口 8080 上运行。

我向其中一个网站添加了 SSL 证书以在 https 中运行它,但是配置后,我在 https 中浏览该网站时收到此错误:

错误 503 服务不可用

服务不可用 Guru 冥想:

编号:613157718

我为此站点的 nginx 配置如下(部分):

服务器 {

    listen 443 ssl;

    server_name mydomain.com www.mydomain.com;

    root /srv/www/www.mydomain.com;
    index index.php index.html index.htm;

    ssl_certificate /etc/nginx/ssl/mydomain/ssl-bundle.crt;
    ssl_certificate_key /etc/nginx/ssl/mydomain/certificate.key;

    location / {
    proxy_pass  http://127.0.0.1:80;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-Proto https;
    proxy_set_header X-Forwarded-Port 443;
    proxy_set_header X-Secure on;
}

}

有任何想法吗?

干杯,Jaap

答案1

您的设置是 Nginx -> Varnish -> Apache 对吗?

“Guru Meditation”错误来自 Varnish,这意味着请求已经到达 Varnish,但 Varnish 在处理该请求时遇到了问题。

如果您在服务器上运行“varnishlog”,它将开始输出有关每个请求的大量信息。然后在浏览器中发出 https 请求,一旦收到错误消息,请使用 ctrl-c 停止 varnishlog 输出任何其他内容。向上滚动输出,您应该会发现一行或两行告诉您 Varnish 在处理请求时遇到了什么问题。

答案2

Varnish 让我陷入 Guru 冥想
首先,在 varnishlog 中找到相关的日志条目。这可能会给你一些线索。由于 varnishlog 记录了大量数据,因此可能很难追踪这些条目。
你可以设置 varnishlog 记录所有 503 错误,方法是发出以下命令:

$ varnishlog -q 'RespStatus == 503' -g 请求

$ varnishlog -d -q 'RespStatus == 503' -g 请求

由于后端已关闭或运行不正常,您经常会收到 503 错误。在这种情况下,varnishlog 可能会返回类似“FetchError c 没有后端连接”的内容。您应该检查 Varnish Cache 尝试连接的端口、原始服务器以及您的 HTTP 服务(例如 Apache 或 Nginx),看看所有这些是否运行正常 - 如果不是,您需要对后端进行故障排除。

如果您的后端似乎已启动,但仍然收到 Varnish Cache 503 错误,则说明您的 Web 服务器与 Varnish Cache 的连接或 Varnish Cache 配置有问题。

如果您的后端有响应但 Varnish Cache 提供 503,我们经常发现这是由于超时造成的。您可以在后端默认 VCL 部分中更改或添加 .connect_timeout = Xs 和 .first_byte_timeout = Xs,以设置为适合您的 Web 服务器的超时长度。Varnish
Cache Software 提供了有关 Varnish Cache 中可能发生的各种超时的更多信息。另一个技巧是禁用 KeepAlive,以便断开空闲连接。如下所示:

“起源”:{
“地址”:“origin.example.com”,
“disable_keepalive”:true
}

相关内容