Доброго всем LOCALTIME ! 🙂
Решил поделиться с общественностью своими скриптами для связки directadmin и nginx.
В свое время для снижения нагрузки на apache было решено поставить nginx. После некоторого гугления была сделана первая попытка связать панель и nginx. На тот момент скрипт умел совсем немного – только создавать и удалять конфигурационные файлы виртуальных хостов. Он не умел работать ни с поддоменами, ни с алиасами, не умел и переименовывать конфиги доменов.
Затем последовала вторая попытка. Этот скрипт уже был немного “умнее”. Он умел создавать, удалять не только домены, но и поддомены. Однако, после того, как количество вирт. хостов выросло и управляться с большим количеством доменов стало как-то трудно, было решено полностью переписать всю схему работы связки directadmin и nginx. Все домены/поддомены/алиасы будут описываться в map-файле, а в конфиге будут использоваться соответствующие переменные, тем самым будет использоваться всего один небольшой общий конфиг, в котором и описывается виртуальный хост.
“Особые” домены описываются в отдельных конфигурационных файлах.
Кроме того, логи для всех вирт. хостов будет писать nginx, освободим нашего монстра apache от этой обязанности и оставим ему писать только error_log. Что положительно скажется на производительности.
Сказано – сделано.
По моей просьбе и некоторому подобию ТЗ, мой друг Александр Русских написал совсем новый и удобный скрипт, который и будет использоваться в этой статье.
Еще одна моя просьба была направлена Кириллу Коринскому, который написал небольшой патч для nginx. Данный патч выдает 503 ошибку, если уровень load average системы выше заданного в конфиге значения. Да, это грубо, но зато может уберечь сервер от ухода в глубокий своп. Поэтому уровень LA необходимо указывать заведомо высокий.
Итак, поехали.
Часть первая (Если nginx уже установлен – смотрим вторую часть)
У нас в распоряжении сервер с установленной панелькой DirectAdmin (отличная, кстати, панель). Чтобы не делать из системы свалку, nginx будет ставиться из репозитария.
Добавляем репозитарий в список, импортируем ключи и ставим nginx:
# echo "deb http://ftp2.debian.org.ua/debian-dou/ lenny main" >> /etc/apt/sources.list # gpg --keyserver keys.gnupg.net --recv-keys 0A3D4789 gpg: requesting key 0A3D4789 from hkp server keys.gnupg.net gpg: key 0A3D4789: public key "Debian.org.ua Custom Repository " imported gpg: Total number processed: 1 gpg: imported: 1 # gpg --armor --export 0A3D4789 | apt-key add - OK # aptitude update # aptitude install nginx
Стоит заметить, что в этот пакет включено два неофициальных патча, которые описаны в блоге автора
После установки nginx не запустится – это нормально, так как на 80-м порту все еще работает apache.
Дальше будем приводить в порядок конфигурационные файлы apache и nginx.
Часть вторая – Настройка nginx.
Открываем файл /etc/nginx/nginx.conf и вносим изменения в секцию http {}
http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] $host $request "$status" $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for" [$user:$domain] "$upstream_response_time"'; log_format domain '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; log_format ip '$remote_addr'; log_format bytes '$body_bytes_sent'; access_log /var/log/nginx/access.log main; server_tokens off; reset_timedout_connection on; .... .... include maps.conf; server { listen 1.2.3.4:80 default deferred; server_name _; location ~ /.svn/ { deny all; } # include custom_vhost.conf; include maps_vhost.conf; } }
Описываемые форматы log-файла нужны для того, чтобы nginx писал логи для каждого вирт. хоста (apache будет писать только error_log)
В файле custom_vhost.conf – можно описать “особенные” домены, для которых нужны какие-то персональные дополнительные настройки.
Файл maps_vhost.conf – это и есть общий конфиг для всех доменов/поддоменов/алиасов:
set $root /home/$user/domains/$domain/public_html/$subdomain;
set $domainlog $domain.$subdomain;
if ($subdomain = "") {
set $root /home/$user/domains/$domain/public_html;
set $domainlog $domain;
}
if ($user = "") {
set $root /var/www/html;
set $domainlog ip;
}
## maintenance mode
# error_page 403 404 500 502 503 504 /maintenance.html;
# location = /maintenance.html {
# log_not_found on;
# access_log off;
# root html;
# }
error_page 500 502 503 504 /50x.html;
location = /50x.html { root html; }
location / {
log_not_found on;
root $root;
access_log /var/log/httpd/domains/$domainlog.bytes bytes;
access_log /var/log/httpd/domains/$domainlog.log domain;
access_log /var/log/nginx/access.log main;
proxy_redirect off;
proxy_set_header Cookie $http_cookie;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:80;
}
location ~ /\.ht { deny all; }
location ~* ^/(webmail|squirrelmail|roundcube|phpMyAdmin)/.+\.(bmp|jpg|jpeg|gif|ico|cur|png|css|doc|txt|js|docx|rtf|ppt|pdf|svg)$ {
expires 24h;
root /var/www/html;
gzip off;
log_not_found off;
access_log /var/log/httpd/domains/$domainlog.bytes bytes;
access_log /var/log/httpd/domains/$domainlog.log domain;
}
location ~* ^.+\.(css|htc|js|bmp|jp?g|gif|ico|cur|png|doc|avi|txt|doc|rtf|swf)$ {
expires 24h;
root $root;
gzip off;
access_log /var/log/httpd/domains/$domainlog.bytes bytes;
access_log /var/log/httpd/domains/$domainlog.log domain;
log_not_found off;
}
Map-файл с описанием доменов выглядит так:
map $http_host $user{
hostnames;
default "";
.adminco.org "admin";
.nginx.ks.ua "admin";
.site2.com "user2";
....
}
map $http_host $domain {
hostnames;
default "";
.adminco.org "adminco.org";
.nginx.ks.ua "nginx.ks.ua";
.site2.com "site2.com";
....
}
map $http_host $subdomain {
hostnames;
default "";
.blog.adminco.org "blog";
....
}
Этот файл управляется скриптом generate_map.pl, о чем будет написано ниже.
Здесь я привожу немного сокращенное описание виртуального хоста, так сказать, для примера.
Первоначально “пустой” файл maps.conf имеет вид:
map $http_host $user{
hostnames;
default "";
}
map $http_host $domain {
hostnames;
default "";
}
map $http_host $subdomain {
hostnames;
default "";
}
Если на Вашем сервере уже имеются созданные юзеры с их доменами, обратите внимание на UPDATE 2 в конце статьи.
Часть третья – Настройка custom script в Directadmin.
Переходим в /usr/local/directadmin/scripts/custom
В этом каталоге есть файл README, где описан каждый custom-скрипт, который может быть выполнен панелью DirectAdmin. Нам нужно будет создать следующие скрипты:
touch user_destroy_post.sh domain_create_post.sh \ domain_destroy_post.sh domain_change_post.sh \ subdomain_create_post.sh subdomain_destroy_post.sh \ domain_pointer_create_post.sh domain_pointer_destroy_post.sh
Эти скрипты будут вызываться панелью при каждом добавлении/удалении домена/поддомена/алиаса или изменении имени домена.
Содержимое файлов.
Скрипт добавления домена – domain_create_post.sh
#!/bin/sh PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin LANG=C export LANG export PATH /usr/local/directadmin/scripts/custom/generate_map.pl -ad $username $domain if [ $? -gt 0 ]; then exit 1; fi /etc/init.d/nginx configtest > /dev/null if [ $? -gt 0 ]; then exit 1; else /etc/init.d/nginx reload fi exit 0;
Результат выполнения – добавление домена и имени юзера в мап-файл, с последующим релоадом nginx
Скрипт удаления юзера – user_destroy_post.sh
#!/bin/sh PATH=$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin LANG=C export LANG export PATH /usr/local/directadmin/scripts/custom/generate_map.pl -dd $username $domain if [ $? -gt 0 ]; then exit 1; fi /etc/init.d/nginx configtest > /dev/null if [ $? -gt 0 ]; then exit 1; else /etc/init.d/nginx reload fi exit 0;
При вызове скрипт удаляет из map-файла пользователя, проверяет корректность конфигурации nginx и если все нормально – делает релоад nginx-у.
Аналогичные скрипты для создания/удаления алиасов и поддоменов.
Как видно из скриптов – все действия выполняются с помощью “generate_map.pl”
Этот скрипт отвечает за работу с мап-файлом для nginx-а.
Возможности скрипта:
(l) copyleft Olden Gremlin aka Alexander P. Russkih, oldengremlin(at)gmail.com, 2009-2010
Use: ./generate_map.pl [-d] [-c maps.conf] {[{-ad|-dd|-aa|-da|-as|-ds} {username}
{domain} [newdomainname|subdomain|alias]] [...]}
Внимание! Важен порядок следования модификаторов именно в том порядке в котором он описан в Use.
Конфигурационные модицикаторы
-d выводить в stdout diff итоговой работы
-c maps.conf путь к файлу с конфигами maps (опционально)
"Циклические" командные модификаторы
-ad добавить домен
-rd переименовать домен
-dd удалить домен и все поддомены в нем
-aa добавить алиас alias к domain
-da удалить алиас alias
-as добавить subdomain к domain
-ds удалить только subdomain
Идем дальше.
Готовим custom-шаблоны для виртуальных хостов Directadmin.
Скопируем шаблоны для дальнейней правки:
cd /usr/local/directadmin/data/templates; cp ./virtual_host2* ./custom
в этих шаблонах виртуального хоста нужно изменить строку:
на
Также, уберем запись лог-файлов apache.
Заменим эти строки:
CustomLog /var/log/httpd/domains/|DOMAIN|.bytes bytes CustomLog /var/log/httpd/domains/|DOMAIN|.log combined
на это:
# CustomLog /var/log/httpd/domains/|DOMAIN|.bytes bytes # CustomLog /var/log/httpd/domains/|DOMAIN|.log combined
Аналогично нужно изменить шаблон поддомена
(файл /usr/local/directadmin/data/templates/custom/virtual_host2_sub.conf)
Часть четвертая – Настройка Apache.
Открываем файл /etc/httpd/conf/extra/httpd-vhosts.conf, находим эту строку:
Include /etc/httpd/conf/ips.conf
и заменяем на это:
Include /etc/httpd/conf/ips_cust.conf
Сохранияем изменения, копируем /etc/httpd/conf/ips.conf в /etc/httpd/conf/ips_cust.conf
В новом файле необходимо заменить все внешние ip, которые слушает апач на 80-м порту на одну строчку:
NameVirtualHost 127.0.0.1:80
В итоге этот файл может иметь примерно такой вид:
LogFormat "%O \"%r\"" homedir
NameVirtualHost 127.0.0.1:80
NameVirtualHost 1.1.1.1:443
NameVirtualHost 1.2.3.4:443
SSLEngine on
SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key
ServerName shared.domain
ScriptAliasMatch ^/~([^/]+)/+cgi-bin/+(.*) /home/$1/public_html/cgi-bin/$2
AliasMatch ^/~([^/]+)(/.*)* /home/$1/public_html$2
DocumentRoot /home/admin/domains/sharedip
SuexecUserGroup admin admin
CustomLog /var/log/httpd/homedir.log homedir
SSLEngine on
SSLCertificateFile /etc/httpd/conf/ssl.crt/server.crt
SSLCertificateKeyFile /etc/httpd/conf/ssl.key/server.key
ServerName shared.domain
ScriptAliasMatch ^/~([^/]+)/+cgi-bin/+(.*) /home/$1/public_html/cgi-bin/$2
AliasMatch ^/~([^/]+)(/.*)* /home/$1/public_html$2
DocumentRoot /home/admin/domains/sharedip
SuexecUserGroup admin admin
CustomLog /var/log/httpd/homedir.log homedir
Делается это для того, чтобы apache слушал 80 порт только локально и при добавлении или измении ip адресов в Directadmin-е не заменялся этот конфиг. В данной реализации конфига SSL-соединения обрабатываются самим apache, поэтому настройки SSL не меняются.
Просим панель пересоздать пользовательские httpd.conf файлы:
echo “action=rewrite&value=httpd” >> /usr/local/directadmin/data/task.queue
После пересоздания пользовательских httpd.conf можно проверить корректность вновь созданных конфигов и перезапустить apache и nginx:
# apachectl configtest ; nginx -t Syntax OK the configuration file /etc/nginx/nginx.conf syntax is ok configuration file /etc/nginx/nginx.conf test is successful
В итоге, apache будет слушать локальный 80 порт и внешний 443.
На внешних 80 портах будет жить nginx, который принимает и обслуживает запросы клиентов.
Статика полностью отдается nginx-ом, а скрипты отправляются на обработку apache.
Дополнительно в конфигурации вирт.хоста nginx-а можно добавить ограничение по количеству запросов в секунду, ограничить количество запросов к апаче с одного IP, кеширование и т.д. и т.п.
Данная конфигурация уже больше года довольно успешно работает более, чем на 10-ти серверах.
Кому будет интересно – оставляйте коментарии, скрипт отправлю по email.
Так же выслушаю любые поправки, коментарии, дополнения и т.д.
UPDATE.
Совершенно забыл написал, что для апачи нужно доставить модуль mod_rpaf, иначе в логах апачи будет фиксироваться локальный ip адрес вместо ip клиентов.
Добавляется модуль просто:
cd /usr/local/directadmin/custombuild wget http://www.stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz tar xf mod_rpaf-0.6.tar.gz cd mod_rpaf-0.6 apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c
Теперь чуть подправим конфиг httpd.conf. Добавим в начало файла:
LoadModule rpaf_module /usr/lib/apache/mod_rpaf-2.0.so RPAFenable On RPAFproxy_ips 127.0.0.1 x.x.x.x RPAFsethostname On RPAFheader X-Forwarded-For
x.x.x.x – внешний IP адрес сервера. Если их несколько – добавляются через пробел
Записываем изменения и проверяем синтаксис:
apachectl configtest Syntax OK
UPDATE 2.
Один из читателей попросил скриптик для генерации файла maps.conf для уже существующих аккаунтов на сервере.
Что ж, я не сильный скрипто-писатель, тем не менее скрипт набросал.
Скрипт пересоздает полный maps.conf используя данные из /usr/local/directadmin/data/users/
Взять можно по этой ссылке.
Вот теперь все 🙂
Благодарности.
Хочу выразить спасибо Игорю Сысоеву за создание и написание nginx,
Александру Русских за написание скрипта,
Кириллу Коринскому за написание патчей,
клиентам, которые согласились устраивать эксперименты на их серверах,
а также компании Google за их поисковик 🙂
© Просто БлогЪ, AdminCo, 2010
Используя информацию этой статьи, уважайте чужой труд – указывайте ссылку на источник и авторов
хм, странно, сейчас попробую, но изначально то обрабатывался нормально, сгенерён был скриптом по дефолтному
Вроде полегчало, странно только куда оно самостоятельно делось, ибо изначально присутствовало, потому и внимание наверное не обратил, СПАСИБО ОГРОМНОЕ, что ткнули носом. Теперь пойду логи устаканивать.
Доброго времени суток!
Ознакомился со статьей и всеми комментами, заинтересовался весьма. Есть большое желание поковырять этот скрипт. Буду признателен, если вышлите на мыло.
Вроде сделал все по описанию, но при добавлении второго домена, при обращении к нему автоматически редиректит на первый. Т.е. какой бы я домен я не открывал в браузере, все равно отрисовывается страничка первого. Что я мог упустить?
проверьте описание/формат map-файла.
вопрос, мне чтобы считать трафик по сайтам, необходимо проксировать не локалхост, а на внешний адрес, но по другому порту, какую переменную или несколько перемнных мне необходимо указать в значении proxy_pass?
Чтото типа
proxy_pass http://$domain:8081
или как мне решить такую задачу. чтото вообще зациклился на этом…
Панелька (directadmin) сама считает http-трафик для каждого домена на основании данных из лог-файла /var/log/httpd/domains/имя_домена.bytes.
Как я писал в статье, апач не занимается ведением логов (кроме error_log), все логи ведет nginx.
Вот эта строка в каждом локейшене:
access_log /var/log/httpd/domains/$domainlog.bytes bytes;
и пишет кол-во байт отданных от сайта.
Если этот лог не ведется – смотрите error.log и проверьте права на запись в /var/log/httpd/domains/ для пользователя из-под которого работает nginx
Нашел такую багу всей этой системы:
nginx после такой настройки пытается писать логи в папку /var/log/httpd/domains по каждому домену, но directadmin создает все файлы там с правами -rw-r–r– root:apache. Nginx же по дефолту работает от пользователя nginx, посему он не может писать логи в эти файлы.
Делаем следующее:
1. в конфиге nginx меняем User на пользователя apache/httpd/www-data (ну или от какого у вас там выполняется апач)
2. в скриптах предложенных админом нужно вснести следующие поправки. В скрипты:
/usr/local/directadmin/scripts/custom/domain_create_post.sh
/usr/local/directadmin/scripts/custom/domain_change_post.sh
/usr/local/directadmin/scripts/custom/subdomain_create_post.sh
перед строчкой exit 0; добавить строку:
chown -R apache:apache /var/log/httpd/domains/*
Этоо избавит нас от множества проблем с логированием и учетом трафика
Ну это не совсем баг, скорее упущение данного момента в статье. Права на запись в /var/log/httpd/ у меня с помощью ACL выставлены.
Я описал сам принцип, а дальше – у каждого уже свой “напильник”, которым можно допилить под себя как хочется.
В любом случае я рад, если эта статья Вам помогла.
./rewrite_all_maps.sh: line 26: /usr/local/directadmin/scripts/custom/generate_map.pl: No such file or directory
скрипт откуда взять можно? или он дефолтовый?
скрипт с небольшим описанием уехал на указанный емаил.
А можно мне скрипт?
Скрипт отправил.
А можно мне скрипт?
Попробую сделать на своем сервере. Можно и мне выслать generate_map.pl? 🙂 Заранее благодарен!
А можно и мне generate_map.pl? Заранее спасибо!
скрипт всем отправлен.
А можно и мне generate_map.pl? Заранее спасибо!
скрипт отправлен.
А можно и мне generate_map.pl? Заранее спасибо!
Semen, отправил на емаил @google. Ваш домен в net.ua не резолвится.
Попробую сделать на своем сервере. Можно и мне generate_map.pl? Заранее спасибо!
Файлик отправил, встречайте.
Можно и мне скрипт?
Заранее спасибо!
скрипт c описанием отправил
Прошу скинуть скрипт. Спасибо.
Прошу скинуть скрипт generate_map.pl. Спасибо.
Прошу скинуть скрипт. Хотелось бы опробывать. Заранее спасибо!
Скриптик уехал на почту.
Удачи!
Спасибо большое за такую основательную статью.
Ну и можно мне тоже скрипт? 🙂 Спасибо заранее.
Смотрите почту, отправил.
И мне пожалуйста ! generate_map.pl
Скриптик уехал к Вам.
Здравствуйте, а можно мне тоже скрипт?
Спасибо заранее.
Отправил
Спасибо за огромную работу, можно и мне скрипт? почему не выложить и его?
Присоединяюсь! Статья превосходная, собираюсь сделать у себя так же! Можно и мне скрипт? И почему бы не выложить его для свободного скачивания?
Вопрос ко всем, кто просил скрипт – кто-то использует в продакшене все то, что описано в статье ?
С какими проблемами кто столкнулся и как они были решены ?
Прошу отписаться в каментах.
Я ещё не использую, но во вторник буду ставить Directadmin на новый сервер. Сидел вот ломал голову и гугл, как nginx поженить с DA и наткнулся на вашу статью. 🙂
Очень прошу отправить мне скрипт – торжественно клянусь выдать полный отчёт по установке и использованию!
зы
Клятва будет выполнена хотя бы потому, что, видимо, буду морочить голову ещё в процессе установки. 🙂
Заранее спасибо.
Отправил Вам.
Огромное спасибо – получил! 🙂
зы
Обязательно доложу о результатах.
Вышлите, пожалуйста, и мне скрипт.
Прошу выслать скрипт. Хотел бы опробовать.
Заранее благодарю.
Здравствуйте
из статьи не понял где взять файл generate_map.pl
Прочитав еще несколько постов, увидел что пользователи просят прислать файл generate_map.pl на почту.
Пожалуйста, автор статьи, вышлете мне этот скрипт, и другие скрипты тоже можно.
Заранее спасибо.
Здравствуйте.
настроил как описано в статье помимо прочих нюансов о которых спрошу позже возник такой вопрос. nginx не отдает статический контент. Если закоментировать секцию
location ~* ^.+\.(css|htc|js|bmp|jp?g|gif|ico|cur|png|doc|avi|txt|doc|rtf|swf)$ {
expires 24h;
root $root;
gzip off;
access_log /var/log/httpd/domains/$domainlog.bytes bytes;
access_log /var/log/httpd/domains/$domainlog.log domain;
log_not_found off;
}
то страницы отображаются нормально
закоментируйте директиву
log_not_found off;
и проверьте в error.log откуда nginx пробует отдать статику.
Скорее всего в $root некорректный путь формируется
вроде он пытается брать с /var/www/html
такой root есть в предыдущей секции
Сразу не досмотрел
if ($user = “”) {
set $root /var/www/html;
set $domainlog ip;
}
вот откуда этот /var/www/html
значит переменная $user не определена, куда дальше копать???
Проверяйте корректность map-файла
Прежде всего надо создать пустой map-файл.
Именно по его данным строится полный путь в статике.
Я создавал maps.conf средствами Вашего скрипта для существующих юзеров/доменов. Сразу не получилось. Но том пройшло удачно но кроме maps.conf было создано еще много maps.con~34453465345~ кажется так они назывались я решил что это результат работы скрипта – временные файлы которые он почему то не удалил и я их стер вручную оставив только maps.conf.
Если я что то сделал не так то прошу более подробно описать поцесс создания этого файла.
p.s. кстати мне вручную пришлось удалять в скрипте generate_map.pl в конце строк виндовый перевод строки, а то с ними не хотело работать
p.p.s Делаю все это на продакшине
Скрипт НЕ создает map-файл. Об этом написано в статье.
Пустой файл нужно создать вручную, после чего уже можно использовать.
Проверьте, чтобы в начале каждой из трех секций были эти строки:
hostnames;
default “”;
после которых уже должны идти данный о доменах, пользователях и поддоменах.
Да упустил этот момент после добавления этих строк в логах теперь правельные пути но картики все равно не отдает
2012/11/27 16:10:34 [error] 3704#0: *1420 testing “/home/***/domains/***/public_html” existence failed (13: Permission denied) while logging request, client: 95.105.19.117, server: _, request: “GET /pic/incast.png HTTP/1.1”, host: “****”, referrer: “http://****/persona/236/nikolett-sheridan/index.html”
Permission denied – nginx не имеет прав доступа к файлам.
разрешите пользователю, из под которого работает nginx, чтение файлов.
У всех файлов стоят права 644 то есть их могут читать other
Возможно nginx не может войти в каталог (/home/user или /home/user/domains/…)
Как вариант – добавьте nginx в группу, которой состоит apache
Запустил nginx от того же пользователя что и апач заработало.
теперь у меня 3 вопроса осталося
1.что мне делать с файлами
maps.conf~1354026471.4099~
maps.conf~1354026472.4146~
которые создаются в результате работы скрипта который по существующим пользователям создает maps.conf
2. Я FreeBSD-ник и я не знаю как мне поставить rpaf_module в cent_os
3. можна на почту скрипты
user_destroy_post.sh
domain_create_post.sh
domain_destroy_post.sh
domain_change_post.sh
subdomain_create_post.sh
subdomain_destroy_post.sh
domain_pointer_create_post.sh
domain_pointer_destroy_post.sh
И какие на них права должны стоять и владелец???
wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
–2012-11-27 17:59:06– http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
Resolving stderr.net… 173.8.116.123
Connecting to stderr.net|173.8.116.123|:80… failed: Connection timed out.
Retrying.
–2012-11-27 18:02:16– (try: 2) http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
Connecting to stderr.net|173.8.116.123|:80… failed: Connection timed out.
Retrying.
–2012-11-27 18:05:27– (try: 3) http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
Connecting to stderr.net|173.8.116.123|:80… failed: Connection timed out.
Retrying.
–2012-11-27 18:08:39– (try: 4) http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
Connecting to stderr.net|173.8.116.123|:80…
http://www.stderr.net/apache/rpaf/
1. эти файлы можно удалить – это бакапы предыдущего map-файла
2. в статье описан процесс сборки rpaf модуля, пожалуйста, посмотрите внимательно
3. в этих файлах Вы сами пишите что Вам необходимо – это стандартные файлы, которые может использовать ДА.
Внутри каталога /usr/local/directadmin/scripts/custom/ есть README с описанием за что отвечает каждый файл и какими параметрами он оперирует.
Свои скрипты дать не могу, т.к. у меня там многое чего используется, не связанного с nginx.
Однако, пример скриптов при создании/удалении аккаунта описан в статье.
Владелец файлов – diradmin, права 700
Выражаю автору статьи огромную благодарность за написание статьи, за оказанную помощь в настройке сервера и за ангельское терпение.
Почет и уважуха
Спасибо.
И Вам всяческих упехов!
🙂
Здравствуйте.
Возникал такая проблема
этот код не работает и тут интересная штука, php в себя считывает файл полностью и если его сохранить
$text=file_get_contents(“1228980608.swf”);
$filew=fopen(“test.swf”,w);
fwrite($filew, $text);
то сохраняет все с точностью до байта, а вот если его принтить, то печатает “не правильно”
плюс если убрать header(‘Content-type: application/x-shockwave-flash’ и сохранить все символы что выводит браузер в файл, то файл получается размеров 14кб, а должен быть 162
Вот насчет php я не особо…
Попробуйте убрать обработку swf из
location ~* ^.+\.(css|htc|js|bmp|jp?g|gif|ico|cur|png|doc|avi|txt|doc|rtf|swf)
Это первое что пришло в голову
но методом научного тыка выяснили что не хватало
client_max_body_size 40m;
client_body_buffer_size 256k;
proxy_connect_timeout 120;
proxy_send_timeout 120;
proxy_read_timeout 120;
proxy_buffer_size 40m;
proxy_buffers 4 40m;
proxy_busy_buffers_size 40m;
proxy_temp_file_write_size 40m;
Еще вопрос как отключить статику только для одно домена?
Можно создать отдельный конфиг для этого домена.
Я просто хоть уже и освоился немного с nginx но еще не очень хорошо понимаю структуру
Нужно секцию server создавать или location ??
нужно создать секцию server { }
сервера описываются в секции server {}
http://nginx.org/ru/docs/http/ngx_http_core_module.html#server
Что бы лучше понимать как работает nginx необходимо ознакомиться с документацией.
Благо дело, она на русском 🙂
до установки nginx все работало, может нужно на что то обратить внимание???
Хотелось бы настроить на своем маленьком сервере nginx, но нигде не нашел файла generate_map.pl
Буду благодарен, если сможете отправить скрипт на email
Заранее спасибо.
Здравствуйте.
Отправил к Вам скрипт.
Просьба выслать скрипт.
Спасибо.
можете отправить скрипт? спс заранее.
Feqan, отправил.
# service nginx restart
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: [emerg] bind() to 1.2.3.4:80 failed (99: Cannot assign requested address)
nginx: configuration file /etc/nginx/nginx.conf test failed
помогите плс (
> bind() to 1.2.3.4:80 failed (99: Cannot assign requested address)
вместо 1.2.3.4 прописать ip адрес сервера.
Здравствуйте.
Тестирую свой веб сервер (nginx настроен по этой статье) онлайн сервисом. В результатах он мне сообщает о недоработках которые нужно устранить. одна из них это что “Отключена поддержка открытого соединения”
и ниже расшифровкаЖ “Разрешите веб-серверу поддерживать открытое соединение (KeepAlive)”.
Сервер CentOS apache 2.2 + nginx 1.3.11
Я сразу бросился смотреть конфиги апача на предмет “keepalive on” и действительно он был выключен. Но включив и пройдя еще раз тест ситуация не поменялась + погугулив я понял что в бекенде (тоесть в апаче) KeepAlive не влияет на соединения.
Тогда я начал ковырять nginx но не нашел как в нем настроить “поддерживать открытое соединение” (гуглил, но наверное неправильно формулировал вопрос).
Отсюда вопрос, правильно ли я сделал выводы по поводу апача, и как настроить nginx что бы он поддерживал открытые соединения.
Новые версии nginx поддерживают keep alive соединения с бекендом.
Но это не то и не всегда нужно.
Николай, в основном конфиге включите keepalive. Этого должно быть достаточно
А к новым 1.3.11 относится???
А как в основном конфиге nginx включить keepalive??
у меня все что есть с keepalive это keepalive_timeout 300;
вполне достаточно
keepalive_timeout 60;
Всплыл жук,- если удалить последний домен с сервера, то в файле maps.conf в разделе map $http_host $user
пропадают строки
hostnames;
default “”;
И если создать после этого домен, то строчка с доменом появляется, а эти строки нет, и nginx начинает пытаться отдать статику не из нужного каталога, а из каталога по-умолчанию. Только после добавления строк вручную все начинает работать как надо.
Здравствуйте где взять ?
generate_map.pl ?
Заранее спасибо !
ТТ, отправил скрипт к Вам.
Он сейчас не нужен в новых версиях DA кастомбила 2.x там и apache_nginx можно ставить в options.conf указать если, но ставися криво предупреждаю!