Архив

Архив раздела ‘apache’

Исследование причин ошибки Segmentation fault в Apache

15 Октябрь 2012 Comments off

Бывают ситуации, когда процесс апача падает, а в логе остается лишь запись типа «[Thu Oct 11 17:30:03 2012] [notice] child pid 1266 exit signal Segmentation fault (11)«. Чтобы разобраться в причинах, можно использовать файл coredump. Для того, чтобы этот файл создавался при падении апача, нужно сделать следующее:
выполнить команду

echo «/tmp/httpd-core.%p» > /proc/sys/kernel/core_pattern

добавить в скрипт старта апача

ulimit -c unlimited

прописать в конфиг апача (/etc/apache2/apache2.conf)

CoreDumpDirectory /tmp

Установить gdb из backports:

echo «deb http://backports.debian.org/debian-backports squeeze-backports main contrib non-free» > /etc/apt/sources.list
apt-get update && apt-get install -t squeeze-backports gdb

Анализировать полученные core-файлы нужно при помощи gdb:

gdb /usr/sbin/apache2 core_файл

Посмотреть список фреймов:

backtrace

Посмотреть фрейм (в данном случае 3-й) и переменные:

frame 3

info local

По мотивам https://bugs.php.net/bugs-generating-backtrace.php и http://habrahabr.ru/company/bitrix/blog/153001/?#habracut

Categories: apache

Редирект с исключением в Apache

24 Сентябрь 2012 Comments off

Для того чтобы редиректить все обращения кроме определенных, можно использовать RedirectMatch:

 

 RedirectMatch permanent ^/(?!server-status) https://site.ext/

в данном случае все запросы кроме /server-status будут редиректиться на https://site.ext/

 

Categories: apache

Исключения в LocationMatch правиле в Apache

21 Сентябрь 2012 Comments off

Для ограничения доступа к адресам вида example.site/page/edit/11 с определенных ip-адресов и разрешения доступа для всех к остальным (example.site/page/edit/12) можно использовать следующие правила:

  <LocationMatch (?i:/page/edit/11)>
Order deny,allow
Deny from all
Allow from 192.168.0.1
</LocationMatch>

<LocationMatch (?i:/page/edit/(?!11))>
Order allow,deny
Allow from All
</LocationMatch>

Categories: apache

Реальные ip-адреса клентов в логах apache, находящимся за nginx

14 Август 2012 Comments off

Связка Apache-бекенд, Nginx-фронтенд достаточно популярна, но в этом случае в логах апача вместо реальных ip клиентов мы видим ip-адрес, с которого обращается Nginx. Исправить ситуацию поможет модуль rpaf. Включив модуль, в его конфиг надо прописать следующее:


RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1

В опции RPAFproxy_ips необходимо прописать ip-адрес, с которого обращается Nginx.
В конфиге сайта в Nginx также нужно добавить строку

proxy_set_header X-Forwarded-For $remote_addr;
Categories: apache

Логирование запросов и ответов средствами апача

13 Август 2012 Comments off

Иногда возникает необходимость посмотреть приходящие на сервер http-запросы и ответы вместе с заголовками, например, для выяснения причин некорректной работы сервиса. В этом случае можно перехватывать трафик снифером, но если трафик шифрованный, просмотреть его становится непросто. Если мы имеем дело с веб-сервером Apache, то на помощь приходит модуль dumpio. Его необходимо включить и добавить в конфиг хоста, который нас интересует, следующее:

DumpIOInput On
DumpIOLogLevel warn

Это заставит апач логировать входящие запросы с заголовками в ErrorLog хоста, если LogLevel для хоста выставлен в warn (до версии 2.2.4 Apache будет логировать запросы только при LogLevel debug). Если также необходимо логировать ответы апача, то нужно еще добавить:

DumpIOOutput On
Categories: apache

Смешанные правила доступа к хосту в Apache

20 Сентябрь 2010 Comments off

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

Order deny,allow
Deny from all
Allow from 192.168.0.0/24
AuthUserFile /etc/apache2/users.pwd
AuthType Basic
AuthName auth
Require valid-user
Satisfy any

в данном случае пользователи из сети 192.168.0.0/24 будут иметь доступ к хосту без пароля, для всех остальных требуется логин/пароль, которые есть в /etc/apache2/users.pwd.

Categories: apache

Установка mod-security в Debian Lenny

20 Июль 2010 Comments off

Посольку mod-security нет в стандартных репозитариях Debina Lenny, нужно подключить backports. Для этого добавим в /etc/apt/sources.lists:

deb http://www.backports.org/debian lenny-backports main contrib non-free

затем обновим список пакетов и импортируем ключи нового репозитария:

apt-get update
apt-get install debian-backports-keyring

устанавливаем необходимые пакеты

apt-get install libapache-mod-security libxml2

и создаем нужные папки и ссылки

mkdir /etc/apache2/conf.d/modsecurity
cp /usr/share/doc/libapache-mod-security/examples/rules/base_rules (modsecurity_crs_10_config.conf modsecurity_crs_10_global_config.conf) /etc/apache2/modsecurity
ln -s /var/log/apache2 /etc/apache2/logs

в /etc/apache2/apache2.conf вставить:

Include /etc/apache2/modsecurity/*.conf
Include /etc/apache2/modsecurity/base_rules/*conf

Перезапускаем apache и mod-security работает )

Categories: apache

Редирект с определённых URL в Apache

15 Июнь 2009 Comments off

Например, для того, чтобы перенаправить пользователя с адреса вида http://site.exp/page/тут_что-то_ещё на http://othersite.exp/page/тут_что-то_ещё, надо в конфиг, который относится к сайту http://site.exp, прописать следующее:

RedirectMatch ^/page/(.*) http://othersite.exp/page/$1
Categories: apache

Запрет логирования обращений к определённым URL в Apache

9 Апрель 2009 Comments off

Чтобы апач не логировал обращения к определённым урлам надо в конфиг виртуального хоста прописать:

SetEnvIf Request_URI “^/file\.txt$” dontlog
CustomLog /var/log/apache2/access.log combined env=!dontlog

В данном примере не будут записываться в лог обращения к урлу http://yoursite.com/file.txt

Categories: apache

Subversion + Apache2 на Debian

6 Март 2009 Comments off

Итак, для начала установим пакеты:

sudo apt-get install subversion libapache2-svn

теперь создадим репозитарий и разрешаем пользователю веб-сервера писать в него:

sudo svnadmin create /opt/svn/repos/myproject
sudo chown www-data /opt/svn/repos/ -R

добавляем в конфиг виртуального хоста:


     DAV svn
     SVNParentPath /opt/svn/repos/
     AuthType Basic
     AuthName "My Repository"
     AuthUserFile /etc/apache2/dav_svn.passwd
     Require valid-user

далее включаем необходимые модули:

sudo a2enmod dav dav_fs dav_svn
sudo /etc/init.d/apache2 force-reload

и создаём пользователя для авторизации:

sudo htpasswd -c /opt/svn/passwd admin

всё, теперь можно пользоваться репозитарием. для начала импортируем файлы:

svn import —username=admin project/ http://svn.dmnd.ru/myproject/
Categories: apache