Как сделать так, чтобы при заходе на domen1.tld:8080, отдавалось содержимое с domen2.tld:8080?

Задача такая, нужно сделать так, чтобы при запросе браузером адреса, к примеру domen1.tld:8080 отдавалось то, что находится на другом физическом компьютере/адресе, например domen2.tld:8080.

Дано:

— 2 компьютера (у обоих роутеры и ОС Debian);

— у первого IP статический, у второго динамический;

— доменное имя (domen1.tld), которое привязано к первому серверу (оно основное и должно быть привязано к первому серверу, по-этому вариант привязки его ко второму серверу или перенос сервиса со второго компьютера на первый, не предлагать) и второе доменное имя (domen2.tld) — динамически обновляемое вторым компьютером;

— на втором компьютере работает некий сервер, с основным доменом, вернее поддоменами, прописанными как SRV и CNAME — записи.


Нужно каким-либо образом сделать так, чтобы при коннекте на основной корневой домен — domen1.tld с портом 8080, коннект шел на второй компьютер и соответственно чтобы данные отдавал второй сервер на котором слушается порт 8080 — domen2.tld:8080.


— Пробовал через SRV-записи, вида:
_http._tcp.domen1.tld. IN SRV 0 5 8080 domen2.tld.<br/>


Но не получилось. «Проброса» не происходит… Браузер не показывает нужного…


Выслушаю любые варианты, но напомню, главный домен — IP статика, второй домен — динамически обновляется. Вариант переноса сервера/домена с первого на второй или наоборот не предлагать.


З.Ы. может быть, с помощью iptables можно это сделать как-то?

UPD: Вопрос частично решился, с помощью проксирования через nginx.

UPD: Вопрос окончательно решился.

Конфиг для Nginx'a для тех кому понадобится:

server {<br/>
  listen 8080;<br/>
  server_name domen1.tld <a href="http://www.domen1.tld;">www.domen1.tld;</a><br/>
    location / {<br/>
      proxy_pass <a href="http://domen2.tld">domen2.tld</a>:8080/;<br/>
      proxy_redirect off;<br/>
      proxy_set_header Host $host:$proxy_port;<br/>
      proxy_set_header X-Real-IP $remote_addr;<br/>
   }<br/>
}<br/>
  • Вопрос задан
  • 3117 просмотров
Решения вопроса 1
@bondbig
Браузеры не поддерживают SRV
Вам нужен банальный реверс-прокси. NginX подойдет.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
merlin-vrn
@merlin-vrn
1. Конечно, первое, что приходит на ум — reverse proxy. Nginx посоветовали, можно и с Apache сделать, и с Squid — в общем, выбор есть. Минус: для второго сервера все запросы будут приходить как бы с первого, а реальные адреса придётся смотреть в логах прокси на первом.

2. На «более низком» уровне: NAT. Нужен прямой линк между серверами (как вариант, его имитация при помощи VPN). Первый сервер NATит все пакеты, приходящие на порт tcp/8080 на второй, а на втором в вебсервере, висящем на 8080, настроен виртуалхост с тем доменом, на который будут обращаться пользователи, и правило в RPDB, что все пакеты, исходящие с внутреннего адреса, идут через первый.

Второй вариант геморройнее, но вполне работоспособен. Я бы первый сделал.

CNAME тут поможет только если вы захотите сделать серверы с разными именами, ибо в любом случае для конечных пользователей domen1 и domen2 будут указывать на один и тот же адрес. Можно второй сделать CNAME первый.

SRV в HTTP не используется.

Если расскажете, зачем это такое вам нужно, может и более нормальное решение предложат.

Если не сер
Ответ написан
sajgak
@sajgak
Банальный редирект чем не подходит?
Ответ написан
ValdikSS
@ValdikSS
А CNAME не работает? У меня некоторое время назад на домене был сделан CNAME на домен *.dyndns.com, и все работало
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы