![错误 503 服务不可用 Varnish/Nginx/SSL](https://linux22.com/image/677742/%E9%94%99%E8%AF%AF%20503%20%E6%9C%8D%E5%8A%A1%E4%B8%8D%E5%8F%AF%E7%94%A8%20Varnish%2FNginx%2FSSL.png)
我有一个设置,其中 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
}