我们有一台临时机器,最近一直返回 403 状态。这是一台运行 nginx 的 centOS 机器。Nginx 将一些流量传递给 scala Play 应用程序和运行 PHP 应用程序 (Drupal) 的 Apache。该服务器受基本 htaccess 身份验证保护。
当我导航到服务器时,我获得了基本身份验证并成功登录。
如果我请求 robots.txt 文件,它会立即出现,并且 nginx access.log 显示请求为 200 OK 并记录我的 htaccess 用户名。
XX.XXX.XXX.XXX - MYUSER [31/Dec/2015:16:16:02 +0000] "GET /robots.txt HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36" "-"
但是当我请求网站主页(drupal 主页)时,浏览器中出现 403 错误。当我查看 nginx 错误日志时,我发现此消息是在我发出请求后立即记录的:
XX.XXX.XXX.XXX - MYUSER [31/Dec/2015:16:18:02 +0000] "GET /index.php HTTP/1.1" 499 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36" "-"
显然499 是 nginx 特定代码因为在处理请求时客户端关闭了连接。但是我的浏览器仍在等待响应。一分多钟后,我在浏览器中收到 503 错误,这记录在 nginx access.log 中:
XX.XXX.XXX.XXX - MYUSER [31/Dec/2015:16:20:32 +0000] "GET /index.php HTTP/1.1" 504 584 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36" "-"
当我查看 nginx error.log 时,我看到了以下内容:
2015/12/31 16:20:32 [error] 11645#0: *78933 upstream timed out (110: Connection timed out) while reading response header from upstream, client: XX.XXX.XXX.XXX, server: staging.mysite.com, request: "GET /index.php HTTP/1.1", upstream: "http://127.0.0.1:8080/index.php", host: "staging.mysite.com"
所以我想知道问题出在 Apache 还是 Drupal。apache access_log 没有记录我的用户对 index.php 的请求,error_log 没有显示此日期的任何内容。我重新启动了 apache - 没有变化。
为了检查 drupal,我制作了一个简单的 php 测试页面来引导 drupal。尽管延迟很长,但我还是能够加载该页面。这导致 nginx access.log 中有记录,但 apache access_log 中没有记录。
我不太熟悉如何解决这些问题,也不太熟悉如何使用 nginx,所以我在这里有点不知所措。有人知道下一步该怎么做吗?