Nginx:随机用户得到“未find服务器”

我最近从几个PHP和Django站点从Apache转换到nginx / php-fpm。 在某些时候,一些用户开始报告他们不能访问网站,并得到“服务器未find”。 他们说:

我试图打开我的电脑网站,并得到“服务器没有find”。 如果我在工作中通过其他电脑,或通过我的电话,一切都很好。 我的IP是:xxx.xxx.xxx.xxx

我在错误日志中使用了grep来查找这些IP,但什么都没有。 看来,当用户被“阻止”这种方式,他不能访问该网站了 – 它并没有被自己治愈。 另一方面,每天有超过3万人访问这些网站,没有任何问题。

这些被封锁的东西似乎没有什么特别之处 – 它们使用不同的浏览器,具有不同的子网。 它没有任何意义。

你能给出如何诊断和解决这个问题的build议吗?

我的configuration之一是:

 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内容:

 deny 178.49.145.133; deny 109.237.124.172; deny 95.24.207.110; 

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

问题是我的托pipe服务提供商的防火墙。 人们被阻止和禁止SYN洪水,因为我的网站一次做超过50 HTTP请求。 这是一个可怕的情况,我不得不做出优化来解决它。 谢谢大家的帮忙!

你有任何types的防火墙启用? 例如csf有一个Port Flood设置部分。 也许是因为某些IP地址的networking活动而导致暂时的IP禁止,这是他们收到“未find服务器”错误的原因。

这听起来像是一个DNS服务问题,在我的实践中,我还没有看到这个问题与DNS不同。

你可以提供更多的信息:

  • 你使用自己的DNS服务器?
  • 如果你这样做,那里有什么防火墙? 日志显示有问题的客户请求?
  • 当问题发生时请客户端尝试'ping domain.tld',看看结果是什么

也可以尝试添加一个简单的test.html(只有“testing”),并要求用户/客户端也尝试打这个文件(例如http://domain.tld/test.html )。 确保文件可以正常访问,而不强制redirect。

这样我们可以试着保证这个问题不会涉及到一些虚假的外部资源[只影响某些客户/ ip的]。

这可能只是一般的networking问题。 有问题的用户之间有地理上的相似之处吗? 我在澳大利亚,而且和上一次主持人有类似的问题,因为中间networking没有错。 在这种情况下,除了试图与networking接触导致问题之外,你并没有太多的事情可以做,但是根据他们的身份,这可能做也可能不会做太多。

你的nginx.conf中的http {}部分,send_timeout集(或类似的东西)看起来更像是一个networking问题,而不是重写或类似的东西。

您可以尝试将这些设置设置得更高一些:

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

在同一个configuration文件中,你是否设置了limit_zone之类的东西? 这可能是NAT客户端的问题。

你可以在这里复制你的nginx.conf吗? 另一个像tcp_nodelayclosures和/或tcp_nopush的东西?

未find服务器意味着DNSparsing失败。 检查你的DNS。 你有两个www.domain.tld和domain.tld设置? IP是否出现在access.log中?