alternating 404 and 200

Igor Sysoev is at rambler-co.ru
Fri Aug 28 18:58:23 MSD 2009


On Fri, Aug 28, 2009 at 02:22:04PM +0100, Nuno Magalh??es wrote:

> Hi,
> 
> I've had this issue lately and i've been trying to find where did i
> goof up but i'm getting clueless. I've recently compiled 0.8.10 (and a
> few days before 0.8.9) on a Debian/linux amd64. Other than messing a
> bit with the .deb i had no issues. These were the parameters i used:
> 
> --conf-path=/etc/nginx/nginx.conf \
> --error-log-path=/var/log/nginx/error.log \
> --pid-path=/var/run/nginx.pid \
> --lock-path=/var/lock/nginx.lock \
> --http-log-path=/var/log/nginx/access.log \
> --http-client-body-temp-path=/var/lib/nginx/body \
> --http-proxy-temp-path=/var/lib/nginx/proxy \
> --http-fastcgi-temp-path=/var/lib/nginx/fastcgi \
> --with-debug \
> --with-http_stub_status_module \
> --with-http_ssl_module \
> --with-http_xslt_module \
> --with-http_gzip_static_module \
> --with-http_secure_link_module \
> --add-module=/path/to/0.8.10/mod_strip \
> --add-module=/path/to/0.8.10/mod_zip
> 
> I cleared /etc/nginx but i didn't touch other directories (like lib)
> before installing 0.8.10, however, i don't think that would cause this
> issue. Since i had been having these issues since before 0.8.9 i
> decided to go with a spartan configuration:
> 
> $ cat /etc/nginx/nginx.conf
> 
> user www-data;
> worker_processes  2;
> 
> error_log  /var/log/nginx/error.log;
> pid        /var/run/nginx.pid;
> 
> events {
> 	worker_connections  1024;
> }
> 
> http {
> 	root /var/www/nginx-default;
> 	include       /etc/nginx/mime.types;
> 	default_type  application/octet-stream;
> 
> 	#client_body_timeout   10;
> 	#client_header_timeout 5;
> 	#keepalive_timeout     5 5;
> 	#send_timeout          10;
> 
> 	#limit_zone reqsPerClt $binary_remote_addr 1m;
> 	#ignore_invalid_headers   on;
> 	#recursive_error_pages    on;
> 	#sendfile                 on;
> 	#server_name_in_redirect off;
> 	#server_tokens           off;
> 
> 	#tcp_nodelay on;
> 	#tcp_nopush  on;
> 
> 	#gzip              on;
> 	#gzip_static       on;
> 	#gzip_buffers      32 8k;
> 	#gzip_comp_level   9;
> 	#gzip_http_version 1.0;
> 	#gzip_min_length   25;
> 	#gzip_types        text/plain application/xhtml+xml text/css;
> 	#gzip_vary         on;
> 
> 	log_format vpt '[$time_local - $host] $remote_addr $remote_user [$request] '
> 	'[T:$request_time S:$status BS:$body_bytes_sent GZ:$gzip_ratio]
> [$http_user_agent]';
> 
> 	include /etc/nginx/conf.d/*.conf;
> 	include /etc/nginx/sites-enabled/*;
> }
> 
> Since this is my testing machine, i have no domains and test my sits
> with subdirectories:
> 
> $ cat /etc/nginx/sites-available/default
> 
> server {
> 	server_name  localhost;
> 	listen 127.0.0.1:8080; # only in default rcvbuf=64k backlog=128;
> 	access_log  /var/log/nginx/localhost.access.log vpt;
> 	error_log  /var/log/nginx/localhost.error.log;
> 	#limit_conn  reqsPerClt 5;
> 	charset utf-8;
> 
> 	#if ($request_method !~ ^(GET|HEAD|POST)$ ) {
> 	#	return 444;
> 	#}
> 
> 	location / {
> 		root   /var/www/nginx-default;
> 		index  index.php index.html;
> 		#if (!-e $request_filename) {
> 		#	rewrite ^(.*)$ /index.php?m=$request_filename break;
> 		#}
> 
> 	        #if ($request_uri ~*
> (^\/|\/site3/|\/intranet\/|\.html|\.php|\.jpg|\.png|\.css|favicon\.ico|robots\.txt)$
> ) {
> 		#	break;
> 		#}
> 		#return 444;
> 	}
> 
> 	location = /favicon.ico {
> 		return 204;
> 	}
> 
> 	error_page  404  /40x.html;
> 	location = /40x.html {
> 		root   /var/www/nginx-default;
> 	}
> 
> 	error_page  403  /403.html;
> 	location = /403.html {
> 		root   /var/www/nginx-default;
> 	}
> 
> 	error_page   500 502 503 504 /50x.html;
> 	location = /50x.html {
> 		root   /var/www/nginx-default;
> 	}
> 
> 	location ~ \.(php|html)$ {
> 		fastcgi_pass   localhost:8888;
> 		fastcgi_index  index.php;
> 		fastcgi_param  SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name;
> 		fastcgi_param DOCUMENT_ROOT /var/www/nginx-default;
> 		fastcgi_intercept_errors on;
> 		include fastcgi_params;
> 	}
> }
> 
> 
> The issue is: if i reload repeatedly (hitting the reload button on my
> browser repeatedly, at a rate of about 5-6 hits per second), under
> given circumstances, half the time nginx will reply with a normal 200
> (and 304 for static files), then for another half of the same time
> it'll reply with the default 404 page (instead of the configured 404
> page). Then 200, then 404, ... If i slow down the reloads, the 200-404
> cycle slows down as well, and vice-versa.
> 
> 
> - at my docroot i have a very basic index.html, just the necessary to
> show <h1>Test</h1>. I can reload all i want, the issue seldom occurs.
> - i have a very basic html+php site and, again, the issue seldom
> occurs, usually just after i changed the URL from one site to another.
> - i have another basic php+xhtml site. Reloading
> /site3/index.php?param=value will give the aforementioned results
> every time.
> 
> I haven't touched my fastcgi configuration (although i have upgraded
> my system lately). I was fiddling with the .conf files at the time but
> even going back to basic conf i still get this issue. I compiled from
> source and installed using checkinstall but i don't think that would
> interfere. So, i'm not sure this is because of nginx or my system, or
> the 3rd site, or the fastcgi or what...
> 
> I'm kinda lost in finding where the hell did i screw up. Any hints?

Do you see these 404's in access_log and error_log ?


-- 
Igor Sysoev
http://sysoev.ru/en/





More information about the nginx mailing list