Dynamically configured mass virtual hosting
Добрый день. Для части своих проектов используем связку nginx + apache с использованием в apache mod_vhost_alias. Это удобно для доступа к серверам с именем типа example.*.domain.ru где под звёздочкой подставляется имя проекта . Тогда добавление нового проекта не требует правки конфига веб-сервисов. При этом конфигурация выглядит примерно следующим образом: На nginx проксирование с кэшированием: server { server_name ~^example\.[^.]*.domain.com; location ~* \.(bmp|ico|jpg|png|jpeg|gif|css|js|mp3|flv|swf|exe|wmv|zip|pdf|doc|rar|ppt|x ls|MP3|JPG|avi|woff|bin|img)$ { proxy_cache zone; proxy_pass http://nodes_ example; include include/proxy.conf; expires 1d; } location / { proxy_pass http://nodes_ example; include include/proxy.conf; } } В apache2 включен модуль vhost_alias и конфиг выглядит следующим образом: ServerName example.domain.ru ServerAlias example.*.domain.ru VirtualDocumentRoot /var/www/projects/%2/data Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all Где в переменную %2 подставляется соответсувующая часть fqdn сервера. Более подробно http://httpd.apache.org/docs/2.2/ru/vhosts/mass.html Таким образом, добавив в директорию /var/www/projects/ папку с новым проектом получаем рабочий сайт. А теперь проблема: часть проектов переводим на связку nginx + php-fpm. При этом задание рутовой директории ложится на nginx. Как так же красиво и легко сделать задание root в конфиге nginx? ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
RE: две А записи в DNS - будет ли тормозить, если один из провайдеров отвалится ?
Можете пояснить, что за «проблема недулевого TTL»? Что мешает выставить ttl для ns и А записей нулевым? Кроме роста нагрузки на сеть, естественно. From: nginx-ru-boun...@nginx.org [mailto:nginx-ru-boun...@nginx.org] On Behalf Of Алексей Сундуков Sent: Tuesday, January 14, 2014 8:10 PM To: nginx-ru@nginx.org Subject: Re: две А записи в DNS - будет ли тормозить, если один из провайдеров отвалится ? >Данное решение все-же лучше, чем ничего. Рад выслушать альтернативные решения, >которые работают вне пределов одного датацентра. DNS сервер на той же машине, что и веб сервер + А запись на саму себя. Т.е. на host1 крутиться DNS который для домена отдает только одну А запись, причем она ведет на IP адрес host1. А на host2 тоже самое, но только ведет на IP адрес host2. Ну а в NS-ах конечно же указаны оба IP адреса. К сожалению это решает вопрос только с первичным резолвингом и для клиентов которые уже запись откэшили сайт окажется недоступным. Поэтому "проблема недулевого TTL" остается для вернувшихся на сайте посетителей. ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
RE: две А записи в DNS - будет ли тормозить, если один из провайдеров отвалится ?
Далеко не всегда можно выносить информацию на сторонние ресурсы. Скорости или latency до германии могут не устроить для некоторых задач. Да и падают датацентры, никто простой в пару часов вам возмещать в ценах Ваших убытков не будет. From: nginx-ru-boun...@nginx.org [mailto:nginx-ru-boun...@nginx.org] On Behalf Of Артем Васильев Sent: Tuesday, January 14, 2014 1:26 PM To: nginx-ru@nginx.org Subject: Re: две А записи в DNS - будет ли тормозить, если один из провайдеров отвалится ? Любой ДЦ/хостинг априори надежнее чем такое HA-решение на основе местных пионер-телекомов. И избавляет от подобных вопросов и прочей ненужной головной боли. 14 января 2014 г., 11:21 пользователь Alex Domoradov написал: Ну вообще то ни один ДЦ/Хостинг не гарантирует вам 100% Uptime, хотя многие и пишут, но это маркетинг. 2014/1/14 Артем Васильев : > На что только не идут люди, лишь бы не покупать себе впс для хостинга > > > 14 января 2014 г., 9:46 пользователь Лапочкин Константин > написал: > >> Да, появляется ещё один сервис, ДНС, от которого зависит работоспособность >> сайта. >> >> В вашем случае, если уже есть скрипт, который осуществляет переключение >> провайдера, допилить его на изменение А записи на удалённом (не вашем) >> dns >> сервере. С условием выставления минимального ttl для этой записи что-то >> может получиться. Однако, в этом случае ещё одной точкой отказа станет >> ваш >> скрипт. >> >> Ну, про Amazon Route 53 уже сказали. >> >> -Original Message- >> From: nginx-ru-boun...@nginx.org [mailto:nginx-ru-boun...@nginx.org] On >> Behalf Of Vladimir Skubriev >> Sent: Tuesday, January 14, 2014 11:21 AM >> To: nginx-ru@nginx.org >> Subject: Re: две А записи в DNS - будет ли тормозить, если один из >> провайдеров отвалится ? >> >> 14.01.2014 09:11, Лапочкин Константин пишет: >> > У вас даже всё проще. В случае с 2-я датацентрами, вам надо >> > организовывать репликацию. В вашем случае - нет. >> > >> > Вам надо организовать, что бы на каждом входящем интерфейсе слушал dns >> > сервер и на запрос site.com отдавал свой белый ип. >> > >> > Допустим, у вас 2 белых адреса x.x.x.x и y.y.y.y Если через днс >> > спросить у x.x.x.x адрес сайта site.com он ответит x.x.x.x. Если >> > через днс спросить у y.y.y.y адрес сайта site.com он ответит y.y.y.y. >> > Остальное по статье. Если днс провайдера видит, что dns сервер на >> > x.x.x.x не отвечает, он спросит адрес у второго сервера и клиенты пойдут >> на y.y.y.y. >> > >> Все оказывается так просто - но не в моей ситуации (Увы)! >> >> За раскладку большое спасибо. Все по полочкам. Большая благодарность. >> >> Только можно еще один вопрос. >> >> Дело в том, что моё начальство программисты и угодить им - практически не >> возможно. >> >> По крайней мере сколько я себя знаю. На данное предложение - они >> обязательно >> скажут, что держать свой DNS сервер для зоны нашего сайта - не надежно и >> этот вариант скорее всего отметут. >> >> Дело вот в чем, они хотят, чтобы в не зависимости от того, какой провайдер >> в >> текущий момент работал - работал сайт. >> >> Т.е. требования одновременной работы нет. Хотя бы через одного провайдера >> бы >> работал - и этого достаточно. >> >> За самодеятельсность - серьезная вздрючка. >> >> Поэтому возникает вопрос какие еще могут быть альтернативные решения в >> такой >> ситуации. >> >> Я с таким еще не сталкивался. >> >> -- >> -- >> Faithfully yours, >> >> Vladimir Skubriev >> >> ___ >> nginx-ru mailing list >> nginx-ru@nginx.org >> http://mailman.nginx.org/mailman/listinfo/nginx-ru >> ___ >> nginx-ru mailing list >> nginx-ru@nginx.org >> http://mailman.nginx.org/mailman/listinfo/nginx-ru > > > > > -- > WBR > Artem V. Vasiliev > > ___ > nginx-ru mailing list > nginx-ru@nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru -- WBR Artem V. Vasiliev ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
RE: две А записи в DNS - будет ли тормозить, если один из провайдеров отвалится ?
Да, появляется ещё один сервис, ДНС, от которого зависит работоспособность сайта. В вашем случае, если уже есть скрипт, который осуществляет переключение провайдера, допилить его на изменение А записи на удалённом (не вашем) dns сервере. С условием выставления минимального ttl для этой записи что-то может получиться. Однако, в этом случае ещё одной точкой отказа станет ваш скрипт. Ну, про Amazon Route 53 уже сказали. -Original Message- From: nginx-ru-boun...@nginx.org [mailto:nginx-ru-boun...@nginx.org] On Behalf Of Vladimir Skubriev Sent: Tuesday, January 14, 2014 11:21 AM To: nginx-ru@nginx.org Subject: Re: две А записи в DNS - будет ли тормозить, если один из провайдеров отвалится ? 14.01.2014 09:11, Лапочкин Константин пишет: > У вас даже всё проще. В случае с 2-я датацентрами, вам надо > организовывать репликацию. В вашем случае - нет. > > Вам надо организовать, что бы на каждом входящем интерфейсе слушал dns > сервер и на запрос site.com отдавал свой белый ип. > > Допустим, у вас 2 белых адреса x.x.x.x и y.y.y.y Если через днс > спросить у x.x.x.x адрес сайта site.com он ответит x.x.x.x. Если > через днс спросить у y.y.y.y адрес сайта site.com он ответит y.y.y.y. > Остальное по статье. Если днс провайдера видит, что dns сервер на > x.x.x.x не отвечает, он спросит адрес у второго сервера и клиенты пойдут на y.y.y.y. > Все оказывается так просто - но не в моей ситуации (Увы)! За раскладку большое спасибо. Все по полочкам. Большая благодарность. Только можно еще один вопрос. Дело в том, что моё начальство программисты и угодить им - практически не возможно. По крайней мере сколько я себя знаю. На данное предложение - они обязательно скажут, что держать свой DNS сервер для зоны нашего сайта - не надежно и этот вариант скорее всего отметут. Дело вот в чем, они хотят, чтобы в не зависимости от того, какой провайдер в текущий момент работал - работал сайт. Т.е. требования одновременной работы нет. Хотя бы через одного провайдера бы работал - и этого достаточно. За самодеятельсность - серьезная вздрючка. Поэтому возникает вопрос какие еще могут быть альтернативные решения в такой ситуации. Я с таким еще не сталкивался. -- -- Faithfully yours, Vladimir Skubriev ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
RE: две А записи в DNS - будет ли тормозить, если один из провайдеров отвалится ?
У вас даже всё проще. В случае с 2-я датацентрами, вам надо организовывать репликацию. В вашем случае - нет. Вам надо организовать, что бы на каждом входящем интерфейсе слушал dns сервер и на запрос site.com отдавал свой белый ип. Допустим, у вас 2 белых адреса x.x.x.x и y.y.y.y Если через днс спросить у x.x.x.x адрес сайта site.com он ответит x.x.x.x. Если через днс спросить у y.y.y.y адрес сайта site.com он ответит y.y.y.y. Остальное по статье. Если днс провайдера видит, что dns сервер на x.x.x.x не отвечает, он спросит адрес у второго сервера и клиенты пойдут на y.y.y.y. -Original Message- From: nginx-ru-boun...@nginx.org [mailto:nginx-ru-boun...@nginx.org] On Behalf Of Vladimir Skubriev Sent: Tuesday, January 14, 2014 10:43 AM To: nginx-ru@nginx.org Subject: Re: две А записи в DNS - будет ли тормозить, если один из провайдеров отвалится ? 14.01.2014 08:17, Лапочкин Константин пишет: > Можно организовать схему, когда живость сайта будет проверять сам ДНС. > Описание http://habrahabr.ru/post/177145/ > > -Original Message- > From: nginx-ru-boun...@nginx.org [mailto:nginx-ru-boun...@nginx.org] > On Behalf Of Sergey Kobzar > Sent: Tuesday, January 14, 2014 12:57 AM > To: nginx-ru@nginx.org > Subject: Re: две А записи в DNS - будет ли тормозить, если один из > провайдеров отвалится ? > > On 01/13/14 20:30, VovansystemS wrote: >>> Кстати, готовые решения есть? А то постоянно приходиться самому >>> че-то сочинять. >> есть route 53 амазона, он умеет проверять на доступность и изменять >> днс записи по соответствующим правилам. > Не-не. Сервисы, котоырй считают каждый запрос - не наш выбор. Мы еще > не столько много зарабатываем ;). > >>> Едва ли это можно назвать "фэловер" при ненулевом TTL. >> да :( >> ___ >> nginx-ru mailing list >> nginx-ru@nginx.org >> http://mailman.nginx.org/mailman/listinfo/nginx-ru > ___ > nginx-ru mailing list > nginx-ru@nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru > ___ > nginx-ru mailing list > nginx-ru@nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru Спасибо. Очень хорошая подсказка. Только вопрос: Ведь здесь описывается несколько дата центров. В моем варианте - это не вариант. У меня просто двай провайдера и серверная в одном здании. В таком случае как лучше организовать доступ к сайту компании, при наличии двух провайдеров? -- -- Faithfully yours, Vladimir Skubriev ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
RE: две А записи в DNS - будет ли тормозить, если один из провайдеров отвалится ?
Можно организовать схему, когда живость сайта будет проверять сам ДНС. Описание http://habrahabr.ru/post/177145/ -Original Message- From: nginx-ru-boun...@nginx.org [mailto:nginx-ru-boun...@nginx.org] On Behalf Of Sergey Kobzar Sent: Tuesday, January 14, 2014 12:57 AM To: nginx-ru@nginx.org Subject: Re: две А записи в DNS - будет ли тормозить, если один из провайдеров отвалится ? On 01/13/14 20:30, VovansystemS wrote: >> Кстати, готовые решения есть? А то постоянно приходиться самому >> че-то сочинять. > есть route 53 амазона, он умеет проверять на доступность и изменять > днс записи по соответствующим правилам. Не-не. Сервисы, котоырй считают каждый запрос - не наш выбор. Мы еще не столько много зарабатываем ;). > >> Едва ли это можно назвать "фэловер" при ненулевом TTL. > да :( > ___ > nginx-ru mailing list > nginx-ru@nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
RE: FTP Proxy
Вам нужна балансировка нагрузки на внутрениие фтп? Если да, то haproxy или другие балансировщики. Если нет, то iptables с соответвующм модулем (nf_conntrack_ftp если память не подводит). Особенность протокола ftp в том, что он использует как минимум 2 порта: 21 для обмена служебной информацией и другие для данных. Nginx тут совсем не помощник. From: nginx-ru-boun...@nginx.org [mailto:nginx-ru-boun...@nginx.org] On Behalf Of Роман Sent: Friday, November 15, 2013 3:15 AM To: nginx-ru@nginx.org Subject: Re: FTP Proxy я тоже пробрасываю порт для своих целей, но хочется решения с индивидуальным подходом не вешать же кучу правил для каждой вируталки со своим внешним портом как то не красиво выглядит 14 ноября 2013 г., 15:37 пользователь Илья Шипицин написал: мы используем вот такую штуку http://www.openbsd.org/faq/pf/ru/ftp.html 14 ноября 2013 г., 16:30 пользователь Роман написал: > Здравствуйте. > > Есть куча вируталок во внутренней сети, н с одним нешним ip > > Можно ли проксировать в них ftp соединения через nginx? > > Или есть какое то аналогичное решение? > > ___ > nginx-ru mailing list > nginx-ru@nginx.org > http://mailman.nginx.org/mailman/listinfo/nginx-ru ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
RE: WISRp и UAM средствами nginx
Ссылку, которую вы прислали посмотрел, там скорее клиентская часть. Из дампа микротика не увидел ничего особенного при редиректе. Вот что там происходит: Вначале запрос ссылки и редирект GET /library/test/success.html HTTP/1.0 Host: www.apple.com User-Agent: CaptiveNetworkSupport-200.1 wispr Connection: close HTTP/1.1 302 Hotspot login required Cache-Control: no-cache Content-Length: 135 Content-Type: text/html Date: Fri, 11 Oct 2013 06:37:38 GMT Expires: 0 Location: http://10.0.2.1/login?dst=http%3A%2F%2Fwww.apple.com%2Flibrary%2Ftest%2Fsuccess.html Error 302: Hotspot login required Error 302: Hotspot login required Потом отдаётся страница авторизации GET /login?dst=http%3A%2F%2Fwww.apple.com%2Flibrary%2Ftest%2Fsuccess.html HTTP/1.0 Host: 10.0.2.1 User-Agent: CaptiveNetworkSupport-200.1 wispr Connection: close HTTP/1.0 200 OK Cache-Control: no-cache Connection: close Content-Length: 3223 Content-Type: text/html Date: Fri, 11 Oct 2013 06:37:38 GMT Expires: 0 http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";> internet hotspot > login body {color: #737373; font-size: 10px; font-family: verdana;} textarea,input,select { background-color: #FDFBFB; border: 1px solid #BB; padding: 2px; margin: 1px; font-size: 14px; color: #808080; } a, a:link, a:visited, a:active { color: #AA; text-decoration: none; font-size: 10px; } a:hover { border-bottom: 1px dotted #c1c1c1; color: #AA; } img {border: none;} td { font-size: 14px; color: #7A7A7A; } .http://10.0.2.1/login"; method="post"> .. .. ..http://www.apple.com/library/test/success.html"; /> .. . . . . .<!-- .function doLogin() { ..document.sendin.username.value = document.login.username.value; ..document.sendin.password.value = hexMD5('\234' + document.login.password.value + '\127\323\323\064\231\042\112\004\377\300\213\003\116\227\123\000'); ..document.sendin.submit(); ..return false; .} .//--> . http://10.0.2.1/login?target=lv&dst=http%3A%2F%2Fwww.apple.com%2Flibrary%2Ftest%2Fsuccess.html";>Latviski . . ..Please log on to use the internet hotspot service .. ... .http://10.0.2.1/login"; method="post" . onSubmit="return doLogin()" > ..http://www.apple.com/library/test/success.html"; /> .. .. ... login .. password .. .. ... . ... ...http://www.mikrotik.com"; target="_blank" style="border: none;"> .. . .Powered by MikroTik RouterOS . . . <!-- document.login.username.focus(); //--> -Original Message- From: nginx-ru-boun...@nginx.org [mailto:nginx-ru-boun...@nginx.org] On Behalf Of Maxim Dounin Sent: Friday, October 18, 2013 7:23 PM To: nginx-ru@nginx.org Subject: Re: WISRp и UAM средствами nginx Hello! On Fri, Oct 18, 2013 at 03:28:46PM +0600, Лапочкин Константин wrote: > Добрый день. Используем Nginx для редиректа на captive-портав с наших > wifi-hotspot’ов. Пользователь, подключившись к не защищённой сети при > любом обращении в интернет по протоколам http, https перенаправляется > на наш портал, где проходит авторизацию (либо получает гостевой > доступ). Возникла задача: > что бы на клиентских устройствах с iOS (iPhone, iPad) при подключении > к нашей сети всплывало pop-UP окно с нашим порталом. > Работает это через протокол wisrp, окно называется uam(unified > authorization method). Суть метода в том, что при подключении к сети > ios запрашивает ссылку с «User-Agent: > CaptiveNetworkSupport-200.1 wispr». Если он получает на это 302, то, > теоретически, должно возникнуть окошко со страницей, на которую > перенаправляет 302-й код. Однако, это в nginx не работает. Проверяли, > что работает на microtik. Cнимали дамп пакетов c микротика, увидели > следующее: [...] > Что сделал: пробовал через nc слать заголовки из дампа микротика – > работает, окно появляется. Пересобрал ngnix, что бы заменить > 302 Moved Temporarily на 302 Hotspot login required – не помогло. Если я правильно понимаю, важно не то, как делается перенаправление, а то, что возвращается клиенту после перенаправления. Там должна быть XML'ка установленного спецификацией WISPr вида, пример можно посмотреть, например, тут: http://hotspot-connect.sourceforge.net/ -- Maxim Dounin http://nginx.org/en/donation.html ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru
WISRp и UAM средствами nginx
Добрый день. Используем Nginx для редиректа на captive-портав с наших wifi-hotspot’ов. Пользователь, подключившись к не защищённой сети при любом обращении в интернет по протоколам http, https перенаправляется на наш портал, где проходит авторизацию (либо получает гостевой доступ). Возникла задача: что бы на клиентских устройствах с iOS (iPhone, iPad) при подключении к нашей сети всплывало pop-UP окно с нашим порталом. Работает это через протокол wisrp, окно называется uam(unified authorization method). Суть метода в том, что при подключении к сети ios запрашивает ссылку с «User-Agent: CaptiveNetworkSupport-200.1 wispr». Если он получает на это 302, то, теоретически, должно возникнуть окошко со страницей, на которую перенаправляет 302-й код. Однако, это в nginx не работает. Проверяли, что работает на microtik. Cнимали дамп пакетов c микротика, увидели следующее: GET /library/test/success.html HTTP/1.0 Host: www.apple.com User-Agent: CaptiveNetworkSupport-200.1 wispr Connection: close HTTP/1.1 302 Hotspot login required Cache-Control: no-cache Content-Length: 135 Content-Type: text/html Date: Fri, 11 Oct 2013 06:37:38 GMT Expires: 0 Location: http://10.0.2.1/login?dst=http%3A%2F%2Fwww.apple.com%2Flibrary%2Ftest%2Fsuccess.html Error 302: Hotspot login required Error 302: Hotspot login required В случае же работы через портал сообщение следующее: GET /UMzURpsu3rm/tumgdbEHylH.html HTTP/1.0 Host: www.appleiphonecell.com Connection: close User-Agent: CaptiveNetworkSupport-277 wispr HTTP/1.1 302 Moved Temporarily Server: nginx/0.7.67 Date: Fri, 11 Oct 2013 07:37:01 GMT Content-Type: text/html Content-Length: 161 Connection: close Location: https://perm.wifi.domru.ru/index.php?request_uri=http://www.appleiphonecell.com/UMzURpsu3rm/tumgdbEHylH.html 302 Found 302 Found nginx/0.7.67 Что сделал: пробовал через nc слать заголовки из дампа микротика – работает, окно появляется. Пересобрал ngnix, что бы заменить 302 Moved Temporarily на 302 Hotspot login required – не помогло. Есть у кого-то опыт настройки подобных вещей через ngnix? ___ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru