Перенаправьте порт 80 на 8080 и заставьте его работать на локальной машине

Я перенаправил трафик с порта 80 на 8080 на своей машине с помощью

sudo iptables -A PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to-ports 8080

Это прекрасно работает для всего мира, кроме моей собственной машины. Я разработчик, и мне нужно перенаправить порт 80 на 8080 для себя.

Мой IP-адрес - это 192.168.0.111

Мой веб-сервер работает на порту 8080

Я хочу открыть веб-сайт с http://192.168.0.111/ вместо http://192.168.0.111:8080/ с того же компьютера, на котором работает сервер.

Вам нужно использовать OUTPUT цепочку в качестве пакетов, предназначенных для обратная петля интерфейс не проходит через PREROUTING цепь. Следующее должно сработать; запустите как root:

iptables -t nat -A OUTPUT -o lo -p tcp --dport 80 -j REDIRECT --to-port 8080

Просто просто используйте iptables, разрешающие оба порта 80 и 8080, затем перенаправьте 80 на 8080, убедитесь, что вы назначаете правильный сетевой адаптер .. в примере я использую eth0

iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPTiptables -A INPUT -i eth0 -p tcp --dport 8080 -j ACCEPTiptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

Это сработало для меня.

$ sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

Вместо того, чтобы iptables, Ты мог бы попробовать:sudo ssh -gL 80:127.0.0.1:8080 localhost

я бы предположил, что это потому, что пользователь, не являющийся root, не может привязаться к портам 80/443, и он не хочет запускать свою веб-службу от имени root…

@mattdipasquale, обычные пользователи не могут получить доступ к порту 80, поэтому вы не смогли запустить веб-службу, такую как python flask, как обычный пользователь.

Почему бы вам просто не привязать веб-сервер к порту 80?

Извините меня за аббревиатуру, но какова цель переадресации порта 80 на 8080?