Конфликт allow, deny с error_page в внутри server или ошибка конфигурации?

subscribe at hub21.ru subscribe at hub21.ru
Wed Feb 27 17:19:03 UTC 2013


Доброго времени суток сообществу.
Странная проблема замечена с nginx.
Пример моей конфигурации:

server {
listen 80;
server_name vhost.mydomain.ltd;
access_log       /var/log/nginx/vhost.mydomain.ltd/access.log;
error_log       /var/log/nginx/vhost.mydomain.ltd/error.log;
root /srv/http/vhost.mydomain.ltd/html;
index index.php;
client_max_body_size 30m;
allow 10.0.0.0/8;
         deny all;

location / {
	index index.php;
}

location ~* \.(jpg|jpeg|gif|png|svg|js|css|ico|txt)$ {
	access_log off;
	expires      30d;
	root            /srv/http/vhost.mydomain.ltd/html;
}

location ~ \.php$ {
	try_files  $uri =404;
	fastcgi_pass   php_backends;
	fastcgi_index  index.php;
	fastcgi_param  SCRIPT_FILENAME  $document_root/$fastcgi_script_name;
	fastcgi_param  CONTENT_TYPE       $content_type;
	fastcgi_param  CONTENT_LENGTH     $content_length;
	fastcgi_param  QUERY_STRING       $query_string;
	include /etc/nginx/fastcgi_params.conf;
}

location /uploads/ {
	location ~ .*\.(php|php5)?$
             {
                         deny all;
                 }
}

location = /favicon.ico {
	log_not_found off;
	access_log off;
}
location = /robots.txt {
	log_not_found off;
	access_log off;
}

location ~ /\.ht {
	deny  all;
}
include /etc/nginx/error_pages.conf;
         location /error_pages/ {
                internal;
                root /srv/http/webstatic/html;
         }

}
Содержимое /etc/nginx/error_pages.conf:
error_page 400 /error_pages/400.html;
error_page 401 /error_pages/401.html;
error_page 402 /error_pages/402.html;
error_page 403 /error_pages/403.html;
error_page 404 /error_pages/404.html;
error_page 405 /error_pages/405.html;
error_page 406 /error_pages/406.html;
error_page 407 /error_pages/407.html;
error_page 408 /error_pages/408.html;
error_page 409 /error_pages/409.html;
error_page 410 /error_pages/410.html;
error_page 411 /error_pages/411.html;
error_page 412 /error_pages/412.html;
error_page 413 /error_pages/413.html;
error_page 414 /error_pages/414.html;
error_page 415 /error_pages/415.html;
error_page 416 /error_pages/416.html;
error_page 417 /error_pages/417.html;
error_page 500 /error_pages/500.html;
error_page 501 /error_pages/501.html;
error_page 502 /error_pages/502.html;
error_page 503 /error_pages/503.html;
error_page 504 /error_pages/504.html;
error_page 505 /error_pages/505.html;

При такой конфигурации перестаёт работать error_page 403. Вместо того, 
что задано, nginx отдаёт стандартную страничку ошибки. Если перенести 
директивы allow, deny в внутрь location /
Отдаёт указанную страничку нормально. С остальными страничками проблем 
не замечено.
Пробовал указывать уровень логирования debug в error_log, но ничего 
подозрительного по данной проблеме не заметил.
В чём может быть дело?

nginx version: nginx/1.2.7
built by gcc 4.4.5 (Debian 4.4.5-8)
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx/ --sbin-path=/usr/sbin/nginx 
--conf-path=/etc/nginx/nginx.conf 
--error-log-path=/var/log/nginx/error.log 
--http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid 
--lock-path=/var/run/nginx.lock 
--http-client-body-temp-path=/var/cache/nginx/client_temp 
--http-proxy-temp-path=/var/cache/nginx/proxy_temp 
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp 
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp 
--http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=www-data 
--group=www-data --with-http_ssl_module --with-http_realip_module 
--with-http_addition_module --with-http_sub_module 
--with-http_dav_module --with-http_gzip_static_module 
--with-http_stub_status_module --with-file-aio 
--add-module=/usr/src/nginx-1.2.6/addmodules/headers-more-nginx-module 
--without-http_userid_module --without-mail_pop3_module 
--without-mail_imap_module --without-mail_smtp_module 
--without-http_proxy_module --without-http_uwsgi_module 
--without-http_scgi_module



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