Назад | Перейти на главную страницу

Как Elastic Beanstalk перенаправляет трафик через порт 80 в мое приложение через порт 8080 без nginx / apache?

Это самая странная вещь на свете. Я настроил прокси-сервер в среде AWS Elastic Beanstalk на никто вместо nginx или apache, чтобы уменьшить накладные расходы на сервер, и поскольку мне не нужно кеширование.

Однако произошло самое странное. Сервер может принимать соединения через порт 80 и перенаправлять их в мое приложение Node.js, работающее на 8080, хотя, по-видимому, никакая служба не прослушивает порт 80! Я проверил с помощью следующих команд:

Бег curl http://localhost/ на реальном сервере работает, так что это не случай сложных правил пересылки Elastic Load Balancer.

Как это делает AWS? Как они пересылают трафик без прослушивания процесса :80 или правило пересылки iptables?

Это правило NAT.

iptables -L -t nat

Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
REDIRECT   tcp  --  anywhere             anywhere             tcp dpt:http redir ports 8080
REDIRECT   tcp  --  anywhere             anywhere             tcp dpt:http redir ports 8080
REDIRECT   tcp  --  anywhere             anywhere             tcp dpt:http redir ports 8080

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         
REDIRECT   tcp  --  anywhere             anywhere             tcp dpt:http redir ports 8080
REDIRECT   tcp  --  anywhere             anywhere             tcp dpt:http redir ports 8080
REDIRECT   tcp  --  anywhere             anywhere             tcp dpt:http redir ports 8080

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination    

Благодаря @slims_s из Reddit.