Назад | Перейти на главную страницу

сброс соединения с сайтом при первой загрузке

Я использую nginx с php-cgi. в последнее время возникла проблема, когда, если вы не просматриваете мой сайт какое-то время, например, 3-4 минуты, а затем открываете его снова, первый отправленный вами запрос вернет сброс соединения одноранговым узлом в браузере. если вы обновите, все последующие запросы будут работать нормально. это происходит каждый раз, и это не просто единичный инцидент, это случается со всеми, кто пользуется моим сайтом. Я попытался перезапустить nginx и php-cgi, но безуспешно. кто-нибудь знает, в чем может быть проблема? Я могу предоставить любую необходимую информацию.

Стоит отметить, что в журнале ошибок нет ничего, кроме сообщения о преждевременном закрытии соединения клиентом.

nginx.conf

user  nobody;
worker_processes  4;
error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;


events {
    worker_connections  2048;
}


http {
    include       /etc/nginx/mime.types;
    error_page 404 /404.html;
    error_page 403 /403.html;
        error_page 444 /444.html;
error_page 502 /502.html;

    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;
        large_client_header_buffers 8 8k;
    sendfile        on;
    tcp_nopush     on;
        tcp_nodelay on;
    keepalive_timeout  30;
        server_tokens off;

    gzip  on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 64 8k;
gzip_min_length 1024; gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
    include /etc/nginx/conf.d/*.conf;
}

default.conf

server {
    listen  80;
    server_name  domain.com;
    error_log /var/log/nginx/error.log debug;   
    access_log  /var/log/nginx/access.log;


    location / {
    if ($request_method !~ ^(GET|HEAD|POST)$ ) {
        return 444;
    }

    if ($http_user_agent ~* Havij|hvj|acunetix|wget|HTtrack) {
       return 403;
    }

    root   /home/admin06/public_html;
    autoindex off;        
    index  index.php;


# Images and static content is treated different
    location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|xml)$ {
      access_log        off;
      expires           30d;
      root /home/admin06/public_html;
    }

location /nginx_status {
    stub_status on;
access_log off;]
deny all;
}

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
#try_files $uri =404;
    fastcgi_pass backend;


        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /home/site/public_html$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_param  QUERY_STRING     $query_string;
        fastcgi_param  REQUEST_METHOD   $request_method;

       fastcgi_param  CONTENT_TYPE     $content_type;
        fastcgi_param  CONTENT_LENGTH   $content_length;
        fastcgi_intercept_errors        on;
        fastcgi_ignore_client_abort     off;
        fastcgi_connect_timeout 60;
        fastcgi_send_timeout 60;
        fastcgi_read_timeout 60;
        fastcgi_buffer_size 128k;
        fastcgi_buffers 4 256k;
        fastcgi_busy_buffers_size 256k;
        fastcgi_temp_file_write_size 256k;
    }

## Disable viewing .htaccess & .htpassword
    location ~ /\.ht {
        deny  all;
    }
location ~ error_log {
    deny all;
}

    location ~ access_log {
    deny all;
}
location ~ \.cgi {
deny all;
}

location ~ \.db {
deny all;
}
}

Сначала вы должны определить, на каком уровне возникает эта ошибка, то есть на уровне сервера (конфигурация машины Linux), на уровне PHP (php.ini, php-cgi) или на уровне вашего приложения. Ошибки HTTP могут быть вызваны неправильной конфигурацией на любом из этих уровней, поэтому сначала необходимо изолировать и определить, где именно происходит сбой сервера (каламбур).

Я предлагаю вам отслеживать HTTP-запрос:

  1. С того момента, как он поступает на ваш сервер, через конфигурацию Linux.
  2. Затем через конфигурацию Nginx (nginx.conf, default.conf).
  3. Потом через PHP и PHP-CGI.
  4. Наконец, проанализируйте его, как только он попадет в ваше приложение, и проверьте, что ваше приложение делает с ним для отправки ответа http.

Таким образом вы сможете точно определить, где находится проблема, прежде чем хорошие специалисты по неисправности сервера смогут помочь вам решить ее правильно!

Также опубликуйте свои nginx.conf, default.conf, php-fpm.conf Некоторые подробности о вашем приложении также были бы полезны.

Вышло новое обновление nginx (1.2.5), и обновление до более новой версии устранило проблему.