需要授权

需要授权
[centos@staging03 ~]$ sudo netstat -plnt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
tcp        0      0 127.0.0.1:80                0.0.0.0:*                   LISTEN      3600/httpd          
tcp        0      0 127.0.0.2:80                0.0.0.0:*                   LISTEN      1574/varnishd       
tcp        0      0 172.31.22.60:80             0.0.0.0:*                   LISTEN      1539/nginx          
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1251/sshd           
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1501/master         
tcp        0      0 127.0.0.1:443               0.0.0.0:*                   LISTEN      3600/httpd          
tcp        0      0 127.0.0.1:6082              0.0.0.0:*                   LISTEN      1573/varnishd       
tcp        0      0 127.0.0.1:9000              0.0.0.0:*                   LISTEN      3468/php-fpm        
tcp        0      0 127.0.0.1:11211             0.0.0.0:*                   LISTEN      1229/memcached      
tcp        0      0 127.0.0.1:6379              0.0.0.0:*                   LISTEN      1061/redis-server 1 
tcp        0      0 :::22                       :::*                        LISTEN      1251/sshd           
tcp        0      0 :::3306                     :::*                        LISTEN      1383/mysqld 

我检查了一下我的服务器出了什么问题,然后:

curl 127.0.0.1:80

我有:

401 需要授权

需要授权

此服务器无法验证您是否有权访问所请求的文档。您提供的凭据有误(例如密码错误),或者您的浏览器无法提供所需的凭据。


Apache/2.2.15 (CentOS) 服务器位于 127.0.0.1 端口 80

在另一台一切正常的服务器上,我收到空白响应。所以我认为这就是为什么我从 Apache 收到 500 varnish 错误的原因。

在 Apache 日志中,我执行卷曲操作时并没有真正得到任何东西,但在此之前我得到了:

[Wed Oct 27 17:02:25 2021] [notice] caught SIGTERM, shutting down
[Wed Oct 27 17:02:25 2021] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Wed Oct 27 17:02:25 2021] [notice] Digest: generating secret for digest authentication ...
[Wed Oct 27 17:02:25 2021] [notice] Digest: done
[Wed Oct 27 17:02:25 2021] [notice] FastCGI: process manager initialized (pid 3602)
[Wed Oct 27 17:02:25 2021] [notice] Apache/2.2.15 (Unix) DAV/2 mod_fastcgi/2.4.6 configured -- resuming normal operations

因此,看来 FastCGI 配置正确,而我从 Apache 收到的问题很奇怪,是身份验证问题。我还能做些什么来查明问题所在吗?

Varnish 提供以下功能:

   12 TxHeader     b X-Varnish: 1537309960
   12 RxProtocol   b HTTP/1.1
   12 RxStatus     b 500
   12 RxResponse   b Internal Server Error
   12 RxHeader     b Date: Wed, 27 Oct 2021 21:14:18 GMT
   12 RxHeader     b Server: Apache/2.2.15 (CentOS)
   12 RxHeader     b Expires: Wed, 11 Jan 1984 05:00:00 GMT
   12 RxHeader     b Cache-Control: no-cache, must-revalidate, max-age=0

但是,我无法检查 500 内部服务器错误是什么,因为 php 的错误日志似乎是空的。

答案1

待办事项 阿帕奇

  1. 增加 Apache 中的日志级别
  2. 测试对 Apache 中静态文件的 HTTP 调用与对 PHP 的调用之间的区别
  3. 以更高的详细程度监控 Apache 的错误日志

目标是通过curl http://127.0.0.1在主页或某些静态文件上运行来从 Apache 获取 HTTP 200。

TODO 清漆

  1. 将 Varnish 升级到受支持和维护的版本
  2. 在 VCL 中添加后端探测
  3. 通过 VSL 监控后端运行状况

根据您分享的 VSL 输出,我可以看到您正在运行一个旧版本的 Varnish。请参阅https://www.varnish-software.com/developers/tutorials/installing-varnish-centos/了解如何安装Varnish 6.0 LTS在 CentOS 上。

您不仅拥有安全的 Varnish 版本,而且您的 VSL 工具(例如varnishlog)也比您正在运行的版本优越得多。

以下是具有健康探测的后端的示例:

backend default {
    .host = "127.0.0.1";
    .port = "8080";
    .probe = {
        .url = "/";
        .timeout = 2s;
        .interval = 5s;
        .window = 10;
        .threshold = 5;
   }
}

这将允许您持续监控后端的运行状况。您可以使用以下命令执行此操作:

sudo varnishlog -g raw -i Backend_health

输出将帮助您了解后端的行为方式以及它向 Varnish 返回哪个 HTTP 状态代码。

将此与从 Apache 获取 HTTP 200 状态代码的请求相结合,您将非常接近最终解决方案。

相关内容