Eu tenho uma configuração 2.4.7 apache bastante simples no CentOS 6.5 Linux e um servidor web ativo. Sem PHP ou CGI, apenas algumas páginas estáticas e um proxypass para uma camada de servidor diferente.
Estou investigando a segurança e propositadamente enviando dados inválidos na forma de URLs com ~ nomes de usuários que não existem. Espero receber um erro 405.
HTTP/1.1 405 Method Not Allowed Date: Fri, 27 Feb 2015 21:28:51 GMT Server: Apache-Coyote/1.1 X-Frame-Options: SAMEORIGIN Allow: GET,DELETE,POST,PUT X-Frame-Options: SAMEORIGIN
E é isso que recebo 90-95% do tempo. Mas cerca de 1 em 20-30 tentativas obtém um código de retorno 200 com uma página em branco.
200 27/Feb/2015:21:02:50 HTTP/1.1 200 OK Date: Fri, 27 Feb 2015 21:28:50 GMT Server: Apache X-Frame-Options: SAMEORIGIN Content-Length: 1
Se fosse um problema de configuração simples, esperaria que todas as chamadas falhassem ou funcionassem, e não 3-5% de falhas.
Eu só vejo isso na porta SSL, a porta http também está configurada (embora não esteja aberta ao público) e NÃO mostra o mesmo problema. Eu posso enviar centenas de chamadas embora http sem erros, mas obter pelo menos um ou dois a cada 50 chamadas são tão em https.
Alguns dos testes que eu já tentei sem sucesso, são:
Os logs apenas relatam o fato de que um 405 ou um 200 foi enviado, mas nenhuma diferença aparente no URL. Ou quaisquer erros.
Elimine quaisquer problemas de firewall de entrada, tentando chamar o loopback local, o mesmo problema.
Elimine o problema com o balanceador de carga de saída, chamando diretamente a conexão proxy. Meu raciocínio para este teste, não há nada nesta camada camada para lidar com chamadas de nome de usuário e provavelmente ser ignorado e passado pelo proxypass coringa para a próxima camada. A próxima camada sever está respondendo perfeitamente. Sem erros, mesmo com centenas de chamadas no teste de explosão.
Executou o mesmo teste no ambiente de desenvolvimento que é configurado exatamente da mesma forma (a imagem da AWS é a mesma, portanto, as diferenças são apenas nos endereços IP) Nenhum erro, portanto, o volume na produção pode ser problemático. Atualmente, o servidor está com uma média de 5 a 10 hits / s, com curtos picos de até 25. A carga da CPU é de 0,00 a 0,02 com mais de 2G de memória livre de 7G e sem problemas de disco.
Eu não quero postar o arquivo de configuração completo aqui, mas é bastante baunilha com as partes relevantes da leitura do VirtualHost. (URL é alterado para proteger os inocentes e evitar que o stackexchange pense que eles são links)
Listen 443 SSLCipherSuite ***REDACTED*** SSLHonorCipherOrder on SSLSessionCache "shmcb:/opt/httpd/logs/ssl_scache(512000)" SSLSessionCacheTimeout 300 SSLProtocol ALL -SSLv2 -SSLv3 +TLSv1 +TLSv1.1 +TLSv1.2 SSLCompression Off SSLEngine on SSLCertificateFile ***REDACTED*** SSLCertificateKeyFile ***REDACTED*** SSLCertificateChainFile ***REDACTED*** BrowserMatch "MSIE [2-5]" \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0 CustomLog "/opt/httpd/logs/ssl_request_log" \ "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" Order deny,allow Allow from all SSLProxyEngine on ProxyPass /terms ! ProxyPass /static ! ProxyPass /images ! ProxyPass /terms_ccm ! ProxyPass /pay/ https ://pay.ACME.COM/payment/ ProxyPassReverse /payment/ https ://pay.ACME.COM/payment/ ProxyPass / http: //mbg.ACME.COM/mobgate/ ProxyPassReverse http: //mbg.ACME.com/mobgate /
Tags ssl https http-proxy apache-httpd