У меня есть виртуальная машина, на которой порт 80 используется apache tomcat (host.nvoids.com).
и у меня apache2 php работает на порту 8020, который является блогом wordpress (host.nvoids.com:8020)
Я хочу, чтобы когда кто-то попал на мой сервер на blog.nvoids.com, он пересылался на 8020.
Пожалуйста, дайте мне знать, можно ли что-нибудь сделать с какой-либо программой переадресации портов на основе правил?
что-то вроде ниже -
iptables -t nat -A PREROUTING -d blog.nvoids.com -p tcp -m multiport --dports 80,443 -j DNAT --to-destination blog.nvoids.com:8020
Я не пробовал это сделать, так как не знаю, как отключить указанную выше команду.
Есть ли какие-либо имена или номера правил, которые можно назначить правилам iptables? И можно ли его включить / выключить?
С уважением
Вы не можете сделать это с помощью iptables; вам нужен обратный прокси.
iptables работает на уровнях 2/3/4 сетевого стека, однако HTTP Host
заголовок недоступен на этих уровнях, поэтому iptables не может определить разницу между пакетом на порту 80 для foo.example.com
и еще один пакет для bar.example.com
(при условии, что оба сайта используют один и тот же IP-адрес). Все, что видит iptables, - это пакет, предназначенный для IP-адреса порта 80 (или порта 443).
Чтобы использовать обратный прокси-сервер, вам нужно будет переместить tomcat на другой порт (например, 8080), а затем настроить обратный прокси-сервер для приема соединений на портах 80 и 443. Обратный прокси будет проверять HTTP Host
заголовок входящих соединений и прокси-трафик на соответствующий восходящий сервер (Tomcat или Apache2 в вашем случае).
nginx обычно используется в качестве обратного прокси, но некоторые другие варианты включают apache, haproxy и squid.
Канонический способ отменить
iptables -t nat -A PREROUTING -d blog.nvoids.com -p tcp -m multiport --dports 80,443 -j DNAT --to-destination blog.nvoids.com:8020
просто заменить -A
с участием -D
(замените add на delete):
iptables -t nat -D PREROUTING -d blog.nvoids.com -p tcp -m multiport --dports 80,443 -j DNAT --to-destination blog.nvoids.com:8020
Престижность вам за то, что вы заинтересованы в том, «как я могу сломать вещи, а затем очистить», и за предоставление фактического доменного имени.
Также вы говорите host.nvoids.com:8020, но ваша команда говорит blog.nvoids.com:8020, возможно, ошибка.
Я не думаю, что iptables / DNAT подойдет вам. Причина в следующем: при использовании таблиц IP-маршрутизации главное, на что следует обратить внимание, это то, что не только пакеты должны идти в одну сторону, но также и результирующие пакеты должны возвращать (приблизительно) тот же маршрут. На host.nvoids.com нет ничего, что могло бы заставить его возвращать пакеты на «машину iptables». Клиент не ожидает отправки пакета на один IP-адрес и получения ответа с другого IP-адреса - это не работает.
Может быть, использовать haproxy на blog.nvoids.com или аналогичный несложный обратный прокси?