すべてのアプリケーションが2つの部分に分割される開発環境を設定しようとしています。 ReactJSフロントエンドのアクセスアドレスはhttp://127.0.0.1:3000
、Rubyバックエンドのアクセスアドレスはですhttp://127.0.0.1:3001
。
私のエントリに次の2行を追加しました/etc/hosts
。
127.0.0.2 myapp.dev
127.0.0.3 api.myapp.dev
これにより、同様のブラウザ要求を行ったときにそれにhttp://myapp.dev
リダイレクトする必要がありますhttp://127.0.0.1:3000
。私のフロントエンドがAJAXを使用してAPIを呼び出すときは、http://api.myapp.dev
この要求をにリダイレクトする必要がありますhttp://127.0.0.1:3001
。
127.0.0.2
からすべての要求をルーティングする必要があります127.0.0.1:3000
。127.0.0.3
127.0.0.2:3001
リバースプロキシを設定すると、これを行うことができることがわかります。しかし、いくつかの理由でIPTABLESを使用してこれを行うことができるかどうかを知りたいです。それでは、何をすべきですか?
よろしくお願いします!
ベストアンサー1
127.0.0.2:80
からにアクセスをリダイレクトするには127.0.0.1:3000
:
# iptables -t nat -A PREROUTING -p tcp -d 127.0.0.2 \
--dport 80 -j REDIRECT --to-port 3000
# iptables -t nat -A OUTPUT -p tcp -d 127.0.0.2 \
--dport 80 -j REDIRECT --to-port 3000
チェーンの最初のルールは、PREROUTING
localhost以外の場所からの着信トラフィックと一致します。チェーンの2番目のルールはOUTPUT
localhostのトラフィックと一致します。
iptables チェーンのルールが処理されます。~のためしたがって、これらのルールの前に一致する既存のルールがファイアウォールにある場合、結果は予想と異なる場合があります。
詳細についてはREDIRECT
Targetを読んでください。iptables 拡張マンページ。