Order allow deny nginx

Posted in Новости on 7 сентября, 2011 by admin

При использовании связки nginx + apache возникает проблема с использованием опции блокирования доступа через .htaccess через Order Allow, deny

Подобная проблема с нерабочими правилами решается путем создания дополнительного локейшена в конфиге nginx ( например нужно ограничить доступ в каталогу /comm :

location /comm {
allow 192.168.1.0/255;
deny all;
}

Логика именно сверху вниз, то есть если первым правилом поставить deny all , то последующие allow правила будут игнорироваться.

Tags: ,

пересборка nginx 0.8 без aio для CentOS c epel5

Posted in Новости on 19 января, 2011 by admin

Если после установки nginx в CentOS с epel5 после запуска оного в логе ошибок возникает вот такая штука :

2011/01/19 18:53:11 [emerg] 24730#0: eventfd() failed (38: Function not implemented)
2011/01/19 18:53:11 [alert] 24729#0: worker process 24730 exited with fatal code 2 and can not be respawn
2011/01/19 19:18:49 [emerg] 24904#0: eventfd() failed (38: Function not implemented)
2011/01/19 19:18:49 [alert] 24903#0: worker process 24904 exited with fatal code 2 and can not be respawn
2011/01/19 18:53:11 [emerg] 24730#0: eventfd() failed (38: Function not implemented)

2011/01/19 18:53:11 [alert] 24729#0: worker process 24730 exited with fatal code 2 and can not be respawn

2011/01/19 19:18:49 [emerg] 24904#0: eventfd() failed (38: Function not implemented)

2011/01/19 19:18:49 [alert] 24903#0: worker process 24904 exited with fatal code 2 and can not be respawn

то значит, что модуль aio не отрабатывает так как нужно и nginx будет работать либо неправильно, либо вообще не работать.

Пересобираем nginx без aio :

1. ставим все нужные пакеты и зависимости :

yum install -y pcre-devel zlib-devel openssl-devel libxslt-devel GeoIP-devel gd-devel rpmdevtools yum-utils

2. создаем нужные условия :

cd /usr/src

rpmdev-setuptree

3. качаем исходники и потрошим пакет :

yumdownloader —enablerepo=epel-source —source nginx

rpm -ihv nginx-*

4. убираем из файла сборки модуль —with-aio

nano /usr/src/redhat/SPECS/nginx.spec

5. пересобираем пакет :

rpmbuild -bb nginx.spec

6. копируем конфиг nginx в безопасное место и удаляем nginx :

cp /etc/nginx/nginx.conf /etc/

yum remove -y nginx

7. накатываем новый пакет :

rpm -i /usr/src/redhat/RPMS/i386/nginx-0.8.53-1.i386.rpm

8. возвращаем конфиг на место и перезапускаем nginx :

cp /etc/nginx.conf /etc/nginx/

/etc/init.d/nginx restart

!!!ВАЖНО!!!

В процессе пересобрки пакета в последних строчках будет что то типа :

Wrote: /usr/src/redhat/RPMS/i386/nginx-0.8.53-1.i386.rpm

Wrote: /usr/src/redhat/RPMS/i386/nginx-debuginfo-0.8.53-1.i386.rpm

Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.49670

+ umask 022

+ cd /usr/src/redhat/BUILD

+ cd nginx-0.8.53

+ rm -rf /var/tmp/nginx-0.8.53-1-root-root

+ exit 0

где и указан корректный пакет для установки , соответствующий системе.

Tags: , , ,

защита от hotlink c nginx ( Debian , CentOS )

Posted in Новости on 13 декабря, 2010 by admin

Появилась потребность поставить защиту от хотлинков , когда nginx работает в связке с апачем ( nginx стоит фронтендом ). Все решения выглядели вот так :

location ~ \.(jpg|png|gif)$ {
valid_referers server_names blocked none frienddomain.com *.frienddomain.com ;
if ($invalid_referer) {
return 403;
}
}

но при добавлении локейшена с подправленным valid_referers и расширениями изображения не отдавались и на наш хост, что не есть гуд. Очень долго ворошил интернет, но все ответы были однотипными. Ошибка заключается вот в чем :

с локейшеном — location ~ \.(jpg|png|gif)$ в еррор логе nginx идет вот такая запись :

2010/12/13 12:11:58 [error] 16362#0: *110 open() «/usr/local/nginx/html/comedy/009.jpg» failed (2: No such file or directory),
2010/12/13 12:11:59 [error] 16362#0: *110 open() «/usr/local/nginx/html/comedy/009.jpg» failed (2: No such file or directory),

что свидетельствует нам о некорректности пути. Подправив локейшен был приятно удивлен работоспособностью правила =) . Корректное правило :

location ~* ^.+\.(svg|mp3|ogg|mpe?g|zip|gz|bz2?|rar|jpg|png|gif|jpeg|flv)$ {
root /path/to/site/;
valid_referers none blocked server_names ;
if ($invalid_referer) {
return 403;
}
}

PS для работы должен быть включен в состав nginx модуль — ngx_http_referer_module , который по-умолчанию включен. при конфигурации отсутствие —without-http_referer_module говорит нам, что этот модуль есть.

Приятных блокировок ! =)

Tags: , , ,

Обновление nginx до 0.7.65 для Debian

Posted in Новости on 27 апреля, 2010 by admin

#редактируем репо
echo «deb-src http://mirror.aarnet.edu.au/debian/ squeeze main» >> /etc/apt/sources.list
echo «APT::Default-Release «stable»;» >> /etc/apt/apt.conf

#апдейтимся и устанавлвиваем зависимости и дополнительные компоненты
apt-get update
apt-get install libgeoip-dev devscripts
cd /usr/src/
apt-get build-dep -y nginx
apt-get install -y dpatch
apt-get -t testing source nginx
rm -rf *.deb
cd nginx-0.7.* #версия апается по мере обновления пакетов

#пересобираем пакет nginx
sed -e 's/\(Standards-Version: \).*/\13.8.0/g' debian/control > debian/control.new
mv debian/control.new debian/control
debuild -us -uc

#устанавливаем nginx новый
dpkg -i ../*.deb

!!!ВАЖНО!!!

В процессе установки обновленного nginx спросит менять ли конфиг или нет. Отвечаем «N»

Tags: , ,

server_names_hash_bucket_size nginx

Posted in Новости on 29 марта, 2010 by admin

Встречается вот такая ошибка :

could not build the server_names_hash, you should increase server_names_hash_bucket_size: 32
Но самое интересное, что данной директивы в дефолтном конфиге не стоит, теперь большая часть ежели не все, будут подставлять её во все строки, пока не запустится корректно nginx, но стоит сходить по адресу http://sysoev.ru/nginx/docs/http/ngx_http_core_module.html
как сразу же становится ясно, что ее нужно вставлять в http блок.
Вот пример :
http {
include       /etc/nginx/mime.types;
default_type  application/octet-stream;
server_names_hash_bucket_size 64;
access_log  /var/log/nginx/access.log;
Tags: , ,