Я использую 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-запрос:
Таким образом вы сможете точно определить, где находится проблема, прежде чем хорошие специалисты по неисправности сервера смогут помочь вам решить ее правильно!
Также опубликуйте свои nginx.conf, default.conf, php-fpm.conf Некоторые подробности о вашем приложении также были бы полезны.
Вышло новое обновление nginx (1.2.5), и обновление до более новой версии устранило проблему.