Конфликт 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