これはこれまでで最も奇妙なことです。 AWS Elastic Beanstalk環境のプロキシサーバー設定をnginxまたはApacheではなくnoneに構成して、サーバーのオーバーヘッドを削減しました。キャッシュは必要ありません。
しかし、最も奇妙なことが起こりました。サーバーはポート80で接続を受け入れ、ポート80でリッスンしているサービスがない場合でも、8080で実行されているNode.jsアプリに転送できます。次のコマンドで確認しました。
Sudo lsof -i :80
-出力なしSudo iptables -L
-転送ルールなしSudo netstat -an | grep :80 | grep LISTEN
-ポート80でリッスンしているプロセスはありません実際のサーバーでcurl http://localhost/
を実行すると機能するため、これはトリッキーなElastic LoadBalancer転送ルールの場合ではありません。
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
おかげで redditの@slims_s 。