Где это может понадобиться? Очень простой пример, состоящий из двух условий:
— У меня дома стоит СТРИМ, который блокирует входящий 80 порт
— У меня на работе открыты наружу только порты 443, 80, 5190.
— Как итог: я могу достучаться домой только к 2 сервисам, один из которых у меня SSH, и один остается свободным. Задача сводится к тому, чтобы завернуть все WEB-морды в один сайт, ибо замучался я с SSH-туннелингом. Универсального интерфейса, конечно же, не получится, так что их надо логически разделить.
Ничего революционного я не скажу, лишь подскажу, как это сделать. Весь рассказ основывается на следующих вещах, но при желании вы с легкостью подключите любой другой веб-интерфейс:
— У вас есть динамический реальный IP
— DynDNS
— nginx для Win32
— µTorrent
— µTorrent WebUI
— eMule
DynDNS — принцип, регистрация и настройка
Принцип работы DynDNS очень прост: программа на компьютере, маршрутизаторе или модеме периодически обращается к сервису DynDNS. Сервис смотрит IP, с которого произошло обращение, и привязывает зарегистрированную вами бесплатную DNS-запись к IP, с которого произошло обращение. Таким образом, адрес вида myname.dyndns.org всегда указывает именно на ваш внешний IP-адрес, даже если у вас он динамический.
Вам нужно зарегистрировать аккаунт на сайте DynDNS, затем создать одну бесплатную DNS-запись в том домене второго уровня, который вам больше понравится. Мне, например, .homedns.org нравится. В настройках вам следует выставить галочку «Create wildcard alias». Тип записи должен быть «Host with IP address». Пример можете посмотреть на картинке:

Теперь нам нужно настроить программу-клиент. Сразу оговорюсь, что во многих роутерах Asus WL* уже встроен DynDNS-клиент, его настройки находятся в мень IP Config -> Miscellaneous. Так же во многих других домашних роутерах и модемах присутствует DynDNS-клиент. Если же его нет, то его нужно будет поставить на наш сервер. Скачать можно на самом сайте DynDNS в соответствующем разделе.
Включаем, вводим свой логин, пароль, и уже зарегистрированное на сайте DynDNS.org DNS-имя, которое мы хотим задействовать, и вуаля, теперь вы можете обращаться к своему домашнему роутеру по DNS-имени, например, vpedalkin.dyndns.org.
uTorrent, eMule, ...
Настроить WEB-интерфейсы всех программ, которые вам нужны, предлагаю самостоятельно, благо, инструкций по этой теме очень много.
WebUI uTorrent нам следует настраивать на альтернативном порту и настраивать фильтрацию по IP. Так как сервер nginx мы будем ставить на той же машине, на которой стоит uTorrent, то делаем фильтрацию по 127.0.0.1 (т.е. только с этой машины). Альтернативный порт мы используем для того, чтобы у нас Web-морда не торчала наружу в двух экземплярах — через nginx и через проброшенный до uTorrent порт. Подсказка для тех, кто не настраивал uTorrent WebUI никогда: Нужно положить скачанный с сайта uTorrent файл webui.zip, не распаковывая, в папку профиля. Чтобы ее открыть, нажмите Win + R и введите %USERPROFILE% (с процентиками) и нажмите ОК.
Вебморду eMule настраивать легче легкого: прописываем порт, пароль и все.
Я использовал порт 8081 для uTorrent и 8082 для eMule.
Переходим к настройке nginx
К моему большому сожалению, nginx под Win32 официально нет, но есть его сторонняя сборка на cygwin. Из основных недостатков можно отметить то, что nginx win32 ставится только в C:\nginx и никуда его оттуда не денешь.
Итак, устанавливаем nginx, открываем C:\nginx\conf\nginx.conf. Я Предпочитаю использовать редактор AkelPad — он очень похож на блокнот, но хорошо дружит с кодировками и мелкими рюшечками.
В моем случае HTTP-сервер у меня висит на порту 5190, ибо 443 занимать было жалко, да и неудобно это было мне — настраивать секурный сервер, так как uRemote, которой я пользуюсь, не поддерживает HTTPS-соединений.
Полный пример моего конфига здесь.
В общем случае мы добавляем директивы Server, например так:
server {
listen 5190;
server_name emule.vpedalkin.xxxxdns.org;
access_log logs/emule.log main;
location / {
#Аккуратно тут поправьте URL при копировании
proxy_pass h ttp://127.0.0.1:8082/;
proxy_buffer_size 8k;
proxy_buffering off;
proxy_connect_timeout 3;
proxy_ignore_client_abort off;
}
}Обращаю ваше мнимание: для разделения мы используем Virtual Hosts. Таким образом сервер, в зависимости от того, как к нему обращаются (как к utorrent.vpedalkin.dyndns.org или emule.vpedalkin.dyndns.org), выполняет транспорт к определенному серверу (до uTorrent или eMule соответственно).
Не забываем поправить в конфиге все listen на тот порт, который вы собираетесь открыть наружу для веб-сервера. Также замените все vpedalkin.xxxdns.org на свои собственные реквизиты, зарегистрированные в DynDNS. Обращаю внимание что emule.vpedslkin.dyndns.org не надо регистрировать дополнительно — благодаря той галочке, которую мы поставили в свойствах записи на сайте DynDNS.org в самом начале, все это само будет перебрасываться туда же, куда и сам vpedalkin.dyndns.org
Проброс
Теперь главное не забыть пробросить порт до виндовой машины на роутере. Я использую порт 5190 для веб-сервера.
Результат
Как результат, я получил Web-интерфейс к eMule по адресу
Дополнительно у нас есть сайт
Был рад, если кому-то эта информация покажется интересной.