Apache-2.2

捲曲導致 500 清漆錯誤時,Apache 2.2 需要 401 授權

  • October 28, 2021
[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 的錯誤日誌似乎是空的。

所有阿帕奇

  1. 增加 Apache 中的日誌級別
  2. 測試在 Apache 中對靜態文件的 HTTP 呼叫和對 PHP 的呼叫之間的區別
  3. 使用增加的詳細程度監控 Apache 的錯誤日誌

curl http://127.0.0.1目標是通過在首頁或某個靜態文件上執行 Apache 來獲得 HTTP 200 。

所有清漆

  1. 將 Varnish 升級到受支持和維護的版本
  2. 在 VCL 中添加後端探針
  3. 通過 VSL 監控後端執行狀況

根據您共享的 VSL 輸出,我可以看到您正在執行一個古老版本的 Varnish。請參閱https://www.varnish-software.com/developers/tutorials/installing-varnish-centos/了解如何在 CentOS 上安裝Varnish 6.0 LTS 。

您不僅擁有安全的 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 狀態程式碼的任務結合起來,您將非常接近最終解決方案。

引用自:https://serverfault.com/questions/1081941