извините за название, но я такой новичок в конфигурациях серверов. У меня есть проблема (конечно), и я постараюсь объяснить ее вам:
Моя проблема в том, что веб-серверу необходимо перенаправлять соединения с порта 80 на 8080, поэтому мой разработчик Ruby (не я, я всасываю ruby) сделал перенаправление с помощью
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
Как следствие, мой веб-сайт, конечно, не работает с портом 80. мой вопрос: есть ли способ указать iptables перенаправить порт 80 только для подключения к рубиновому серверу (и, следовательно, к первому домену?) Я не могу изменить порт сервера, так как вы предлагаете мне, чтобы использовать 80 для веб-сайта? извините за глупые вопросы, но я полностью отстой. Я забыл упомянуть, что я больше не общаюсь с разработчиком Ruby, так что это делает ситуацию более драматичной для меня :)
заранее спасибо
Если вы обслуживаете оба домена с одного и того же IP-адреса, вы не можете сделать это с помощью переадресации портов, потому что iptables не имеет возможности узнать, к какому домену пытается подключиться клиент. Ваш сервер не участвует в поиске DNS, и клиент не отправляет HTTP Host:
заголовок до после TCP-соединение установлено.
Что вы можете сделать, так это использовать Apache mod_proxy создать обратный прокси который передает HTTP-запросы на сервер Ruby. Этот рецепт покажи покажи:
<VirtualHost *:*>
ProxyPreserveHost On
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
ServerName your.ruby.site
</VirtualHost>
В этой конфигурации люди, которые посещают сайт Ruby, фактически не будут подключаться к серверу Ruby, они будут подключаться к Apache. Но Apache будет обслуживать страницы, запрашивая их с сервера Ruby, поэтому результат в основном такой же.