Temos uma máquina de teste que retornou recentemente um status 403. É uma máquina centOS rodando nginx. O Nginx transfere algum tráfego para um aplicativo scala Play e Apache que executa um aplicativo PHP (Drupal). O servidor é protegido pela autenticação básica do htaccess.
Quando eu navego até o servidor, recebo a autenticação básica e faço o login ok.
Se eu solicitar o arquivo robots.txt, ele aparecerá imediatamente e o nginx access.log mostrará que a solicitação foi um 200 OK e registrará o nome de usuário do meu 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" "-"
Mas quando solicito a home page do site (a página inicial do drupal), recebo o erro 403 no navegador. Quando eu rastrear os logs de erro do nginx, vejo que esta mensagem é registrada momentos após minha solicitação:
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" "-"
Aparentemente o 499 é um código específico do nginx para uma conexão fechada pelo cliente enquanto a solicitação estava sendo processada . No entanto, meu navegador ainda está aguardando uma resposta. Mais de um minuto depois recebo o erro 503 no navegador e isso é registrado no 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" "-"
Quando eu dou uma olhada no nginx error.log eu vejo isso:
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"
Então eu queria saber se o problema era Apache ou Drupal. O apache access_log não registra o pedido do meu usuário para index.php e o error_log não mostra nada para esta data. Eu reiniciei o apache - sem alteração.
Para checar o drupal, fiz uma simples página de teste php que inicializa o drupal. Consegui carregar essa página, apesar de um longo atraso. Isso resultou em um registro no nginx access.log, mas não no apache access_log.
Eu não estou muito familiarizado com a solução desses problemas, ou trabalhando com o nginx, então eu meio que terminei aqui. Alguém vê um próximo passo razoável?