[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
我检查以调查我的服务器有什么问题,当我这样做时:
卷曲 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 得到的问题是一个身份验证问题,很奇怪。我还能做些什么来确定问题所在吗?
清漆提供以下内容:
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 Internal Server Error 是什么,因为 php 的错误日志似乎是空的。
待办事项阿帕奇
curl http://127.0.0.1
目标是通过在主页或某个静态文件上运行 Apache 来获得 HTTP 200 。TODO 清漆
根据您共享的 VSL 输出,我可以看到您正在运行一个古老版本的 Varnish。请参阅https://www.varnish-software.com/developers/tutorials/installing-varnish-centos/了解如何在 CentOS 上安装Varnish 6.0 LTS 。
您不仅拥有安全的 Varnish 版本,而且您的 VSL 工具(例如
varnishlog
)也比您正在运行的版本优越得多。以下是具有运行状况探测的后端示例:
这将允许您持续监控后端的运行状况。您可以使用以下命令执行此操作:
输出将帮助您了解后端的行为方式以及它返回给 Varnish 的 HTTP 状态代码。
将此与您从 Apache 获取 HTTP 200 状态代码的任务结合起来,您将非常接近最终解决方案。