Nginx: usuários aleatórios recebem “servidor não encontrado”

3

Eu recentemente mudei do apache para o nginx / php-fpm com alguns sites PHP e Django. Em algum momento, alguns usuários começaram a relatar que não podem acessar os sites e obter "servidor não encontrado". Eles dizem:

I'm trying to open the website from my computer and get "server not found". If I go through other computer at work, or through my phone, everything is fine. My IP is: xxx.xxx.xxx.xxx

Eu usei grep no log de erros para encontrar esses IPs, mas não consegui nada. Parece que, quando o usuário é "bloqueado" dessa forma, ele não pode mais acessar o site - ele não está sendo curado sozinho. Por outro lado, mais de 30.000 pessoas visitam os sites todos os dias sem problemas.

Parece não haver nada de especial naqueles bloqueados - eles usam diferentes navegadores, têm diferentes sub-redes. Não faz sentido.

Você pode dar algum conselho sobre como diagnosticar e corrigir esse problema?

Uma das minhas configurações é:

server {
    server_name example.net;
    root /var/www/example/httpdocs;
    index index.php;
    charset utf-8;
    error_log /var/www/example/nginx_error.log;

    # banned users
    include /var/www/example/ban.conf;

    # rewrite rule
    location / {
        if (!-e $request_filename) {
            rewrite ^(.*)$ /index.php?path=$1 last;
        }
    }

    location /admin {
        auth_basic "Restricted";
        auth_basic_user_file  /var/www/example/chronicler/htpasswd;
    }

    # including file with PHP related configuration parameters
    include php_support;
}

ban.conf contents:

deny 178.49.145.133;
deny 109.237.124.172;
deny 95.24.207.110;

Comando IpTables:

sudo iptables -L -n

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

UPDATE

O problema era um firewall do meu provedor de hospedagem. As pessoas foram bloqueadas e banidas para o flood SYN, porque o meu site fez com que fizessem mais de 50 pedidos HTTP de uma só vez. Esta é uma situação horrível e eu tive que fazer otimizações para resolvê-lo. Obrigado pela ajuda, todo mundo!

    
por Temnovit 23.10.2011 / 12:57

5 respostas

1

Você tem algum tipo de firewall ativado? Por exemplo, o csf tem uma seção de configurações do Flood da porta. Talvez uma proibição temporária de IP por causa de algum tipo de atividade de rede de seu IP seja a razão pela qual eles recebem um erro de "servidor não encontrado".

    
por 27.10.2011 / 12:06
3

Soa realmente como um problema de serviço DNS, na minha prática eu não vi esse problema relacionado a algo diferente do DNS.

Você pode fornecer mais algumas informações sobre:

  • você está usando seus próprios servidores DNS?
  • se você fizer isso, há algum tipo de firewall lá? logs mostrando solicitações dos clientes problemáticos?
  • solicite ao cliente que tente 'ping domain.tld' quando o problema ocorrer e veja qual é o resultado

Além disso, tente adicionar um test.html simples (com apenas 'Test' nele) e peça aos usuários / clientes que tentem acessar este arquivo também (por exemplo, link ). Certifique-se de que o arquivo possa ser acessado normalmente, sem forçar algum redirecionamento.

Dessa forma, podemos tentar assegurar que o problema não esteja relacionado a alguns recursos externos falsos [que afetam apenas determinados clientes / ip's].

    
por 29.10.2011 / 17:01
1

É possível que sejam apenas problemas gerais de rede. Existem semelhanças geográficas entre seus usuários com problemas? Estou na Austrália, e tive problemas semelhantes com o meu último host, sem culpa alguma por causa das redes no meio. Neste caso, não há muito que você possa realmente fazer além de tentar entrar em contato com a rede causando problemas, mas isso pode ou não fazer muito dependendo de quem eles são.

    
por 23.10.2011 / 15:15
1

E sobre sua seção http {} em seu nginx.conf, qualquer conjunto send_timeout (ou algo assim? Parece mais um problema de rede do que uma reescrita ou algo assim.

Você pode tentar definir essas configurações um pouco mais alto:

client_body_timeout   90;
client_header_timeout 90;
keepalive_timeout     90 90;
send_timeout          90;

No mesmo arquivo de configuração, você definiu itens como limit_zone? Isso pode ser problemático com clientes NATed.

Você pode copiar aqui o seu nginx.conf? Outras coisas como tcp_nodelay off e / ou tcp_nopush on?

    
por 28.10.2011 / 20:53
0

Servidor não encontrado significa que a resolução do DNS falhou. Verifique seu DNS. Você tem tanto a configuração do domínio e do domain.tld? Os IPs aparecem no access.log?

    
por 23.10.2011 / 14:25