Прозрачное кэширование в nginx

portos nginx-forum на nginx.us
Пт Июл 29 14:24:35 UTC 2011


Всем привет. 
Собственно в чем проблема. При проверке
сайта утилитой 
ab -n 1000 -c 100 http://www.mysite.com/ - сайт мгновенно
падает и даже если выставить параметр -n
100 - ситуация та же. 
Нашел статью по решению этой проблемы:
http://habrahabr.ru/blogs/nginx/124684/ 
Все делаю как описано в статье. Вот мой
конфиг /etc/ngnix/sites-available/000-mysite.com

server {
	listen 192.168.1.1:80;
	server_name mysite.com www.mysite.com;
	
	location ~* ^/(webstat/|awstats|webmail/|myadmin/|manimg/|cgi-bin/) {
		proxy_pass http://192.168.1.1:8080;
		proxy_redirect http://mysite.com:8080/ /;
		proxy_set_header Host $host;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header X-Real-IP $remote_addr;
	}
	location / {
		proxy_pass http://192.168.1.1:8080;
		proxy_redirect http://mysite.com:8080/ /;
		proxy_set_header Host $host;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header X-Real-IP $remote_addr;
		
		proxy_cache cache;
		proxy_cache_valid 10m;
		proxy_cache_valid 404 1m;


	}
	location ~*
^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar)$ {
		root /srv/d_mysite/www/mysite.com/htdocs;
		access_log
/srv/d_mysite/www/mysite.com/logs/nginx-mysite.com-access.log;
		error_page 404 = @fallback;
	}
	location @fallback {
		proxy_pass http://192.168.1.1:8080;
		proxy_set_header Host $host;
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		proxy_set_header X-Real-IP $remote_addr;
	}
}

proxy_cache_path /var/lib/nginx/cache levels=1:2 keys_zone=cache:30m
max_size=1G;
proxy_temp_path /var/lib/nginx/proxy 1 2;
proxy_ignore_headers Expires Cache-Control;
proxy_cache_use_stale error timeout invalid_header http_502;
proxy_cache_bypass $cookie_session;
proxy_no_cache $cookie_session;

После рестарта ngnix я получаю сообщение
об ошибке:

Restarting nginx: nginx: [emerg] the size 31457280 of shared memory zone
"cache" conflicts with already declared size 0 in
/etc/nginx/sites-enabled/000-mysite.com:36
nginx: configuration file /etc/nginx/nginx.conf test failed

Вот сам файл  /etc/nginx/nginx.conf 

user www-data;
worker_processes 4;
pid /var/run/nginx.pid;

events {
	worker_connections 768;
	# multi_accept on;
}

http {

	##
	# Basic Settings
	##

	sendfile on;
	tcp_nopush on;
	tcp_nodelay on;
	keepalive_timeout 65;
	types_hash_max_size 2048;
	# server_tokens off;

	# server_names_hash_bucket_size 64;
	# server_name_in_redirect off;

	include /etc/nginx/mime.types;
	default_type application/octet-stream;

	##
	# Logging Settings
	##

	access_log /var/log/nginx/access.log;
	error_log /var/log/nginx/error.log;

	##
	# Gzip Settings
	##

	gzip on;
	gzip_disable "msie6";

	# gzip_vary on;
	# gzip_proxied any;
	# gzip_comp_level 6;
	# gzip_buffers 16 8k;
	# 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;

	##
	# Virtual Host Configs
	##

	include /etc/nginx/conf.d/*.conf;
	include /etc/nginx/sites-enabled/*;
}


#mail {
#	# See sample authentication script at:
#	# http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
# 
#	# auth_http localhost/auth.php;
#	# pop3_capabilities "TOP" "USER";
#	# imap_capabilities "IMAP4rev1" "UIDPLUS";
# 
#	server {
#		listen     localhost:110;
#		protocol   pop3;
#		proxy      on;
#	}
# 
#	server {
#		listen     localhost:143;
#		protocol   imap;
#		proxy      on;
#	}
#}

Версия ngnix 

nginx -V
nginx: nginx version: nginx/1.0.5
nginx: TLS SNI support enabled
nginx: configure arguments: --prefix=/etc/nginx
--conf-path=/etc/nginx/nginx.conf
--error-log-path=/var/log/nginx/error.log
--http-client-body-temp-path=/var/lib/nginx/body
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi
--http-log-path=/var/log/nginx/access.log
--http-proxy-temp-path=/var/lib/nginx/proxy
--http-scgi-temp-path=/var/lib/nginx/scgi
--http-uwsgi-temp-path=/var/lib/nginx/uwsgi
--lock-path=/var/lock/nginx.lock --pid-path=/var/run/nginx.pid
--with-debug --with-http_addition_module --with-http_dav_module
--with-http_geoip_module --with-http_gzip_static_module
--with-http_image_filter_module --with-http_realip_module
--with-http_stub_status_module --with-http_ssl_module
--with-http_sub_module --with-http_xslt_module --with-ipv6
--with-sha1=/usr/include/openssl --with-md5=/usr/include/openssl
--with-mail --with-mail_ssl_module
--add-module=/build/buildd/nginx-1.0.5/debian/modules/nginx-echo
--add-module=/build/buildd/nginx-1.0.5/debian/modules/nginx-upstream-fair

apache2 -v   
Server version: Apache/2.2.14 (Ubuntu)

lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 10.04.3 LTS
Release:	10.04
Codename:	lucid

Помогите решить этот вопрос. Или
возможно есть другой способ защиты от
такой "атаки"? 
Спасибо.

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,213099,213099#msg-213099



Подробная информация о списке рассылки nginx-ru