Як переправити порт 80 до іншого порту на саморобці?


39

Як я можу пересилати запити, що надходять через порт 80, на інший порт на тій же машині Linux?

Раніше я це робив, змінюючи nat.conf, але ця машина, яку я використовую, не має NAT. Яка альтернатива?


Ніякого NAT чи просто, ні not.conf? Ви спробували будь-які правила iptables за допомогою NAT?
Бен Свінберн

Відповіді:


47

Ви можете виконати перенаправлення за допомогою iptables:

iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT

iptables -A INPUT -i eth0 -p tcp --dport 8080 -j ACCEPT

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

+1. Робити це роками
Олександр Погребняк

1
Як щодо Windows Server?
Люк

О людино, це саме те, що я шукав, кудо!
нейроснап

Спочатку не працювало для мене, але було добре, коли я використовувавsudo
mdiscenza

1
що робити, якщо немає інтерфейсу eth0? чому б не використовувати інтерфейс петлі?
гарнітур

15

Щойно опинившись у цьому питанні, я не міг знайти простий шлях. Не хочу встановлювати Nginx на мою машину, щоб зробити це просте переадресація портів.

Rinetdне працював для мене, жоден робочий пакет для мого дистрибутива. Я socatзамість цього пішов . Супер просто:

socat TCP-LISTEN:80,fork TCP:127.0.0.1:5000

Повинно працювати, suщоб мати можливість слухати в порту 80.


Налаштування Rinetd простіше, я думаю.
johnshen64

socat відмінно працює!
viv

10

Слід звернути увагу на використання зворотного проксі , наприклад Nginx . Наприклад, ви можете помістити щось подібне у свій nginx.confфайл:

server {
    listen         80;

    server_name    your_ip_address your_server_name

    access_log   /var/log/nginx/your_domain/access.log ;
    error_log    /var/log/nginx/your_domain/error.log info ;

    location / {
        proxy_pass  http://127.0.0.1:3000;   # pass requests to the destination
    }
}


2
Чому? Я не обов'язково погоджуюся, але чи є вагома причина, щоб ви не хотіли, щоб це просто сталося ™ в мережевому стеку?
Олі

@Oli Цей метод зворотного проксі не вплине на численні інші віртуальні хости на сервері, що може статися, якщо iptables зробить це, оскільки iptables нічого не знає про віртуальних хостах.
попіл
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.