2017-01-23 1 views
0

私の開発環境を設定して、私のブラウザーのwww.dev.comからのすべての要求がlocalhost:8080にルーティングされるようにします。Node.js開発環境用のExpressセットアッププロキシー、Mac OS X用URLのlocalhostを避けよう

私は/ etc/hostに127.0.01 www.dev.comを追加しましたが、ポート転送は行いません。私がhttp://www.dev.com:8080/に行っても動作しますが、代わりにhttp://www.dev.com/を使用する必要があります。これは実際の運用環境に近いものです。

どうすればよいですか?私はnginxのようないくつかのソリューションを試しましたが、私はそれが好きではありません、私はそれが他の開発者が直接使用することができるように、 "スクリプト可能"になりたいと思います。私はNodeでExpress.jsを使用しています。

私はAssigning a domain name to localhost for development environment on Mac OS X with node.jsから読んでいますが、実際にはポート転送部分は説明していません。

+0

はなぜ、あなたのノードのアプリを持っていない使用することができます8080(Nodeアプリケーションをrootとして実行する必要はありますが) – robertklep

+0

動作が本番環境と異なる可能性があるため、rootとしてアプリケーションを実行すると悪いことになります。実際には、IMOに行くのは非常に単純で悪い方法です。例えば、ファイルを書くことはrootではあるが、プロダクションでは動作しない可能性があるため、プロダクションにヒットするまで問題があることさえ知りません。 – Vadorequest

+0

真であるが、rootとして実行する合理的なアプリケーションであれば、root権限を必要とすることを実行した時点で権限を落とすべきである(例えば、ポート80を聞いている)。しかし、提案された答えははるかに良い解決策です。プロダクション環境では、_something_もポート80でリッスンする必要があります。プロダクションで動作するものによく似たものを作成するには、おそらく非常によく似たもの(リバースプロキシ?)を設定する必要があります。 – robertklep

答えて

2

Macのポート転送を使用できます。ポート80にバインドするにはroot特権が必要です(1024(?)以下のものにはrootが必要です)。おそらく、rootで開発アプリケーションを実行しないことをお勧めします。

あなたは

例えばフォワーディングpfctlポートを使用することができます8080にポート80を転送するには

echo "rdr pass inet proto tcp from any to any port 80 -> 127.0.0.1 port 8080" | sudo pfctl -ef - 

ソース:https://salferrarello.com/mac-pfctl-port-forwarding/

また、ポート80でリッスンの代わりに、(エルキャピタンでは使用できません)ipfw

sudo ipfw add 100 fwd 127.0.0.1,8080 tcp from any to any 80 in 
+0

'ipfw'はもう存在しませんが、良い解決策です(エル・キャピタン以来、私は思っています)。 – robertklep

+0

@robertklepを修正しました。ありがとうございます。 – Ryan

+0

'echo" rdr inet proto任意のポートから任意のポートへのパス80 - > 127.0.0.1 port 8080 "| sudo pfctl -ef -'はヨセミテのために完璧に機能します! :) – Vadorequest

関連する問題