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!