2017-01-23 38 views
0

我想設置我的開發環境,以便我瀏覽器中來自www.dev.com的所有請求都路由到localhost:8080Node.js針對開發環境的Express設置代理,爲Mac OS X避免本地主機在url中

我在我的/ etc/host中添加了127.0.01 www.dev.com,但它不做端口轉發。如果我去http://www.dev.com:8080/它可以工作,但我想/需要使用http://www.dev.com/代替,這更接近實際的生產環境。

我該怎麼做?我嘗試了幾種解決方案,比如nginx,但我不喜歡它,我更喜歡它是「可腳本化的」,這樣任何其他開發人員都可以直接使用它。我正在使用Express.js和Node。

我通讀了Assigning a domain name to localhost for development environment on Mac OS X with node.js,但實際上並沒有解釋端口轉發部分。

+0

爲什麼沒有你的節點的應用程序偵聽端口80,而不是8080(儘管它需要以root身份運行你的Node應用程序)? – robertklep

+0

因爲以root身份運行應用程序會很糟糕,因爲行爲可能與生產不同。這實際上是一個非常簡單和不好的方式去海事組織。例如,編寫一個文件可能以root身份工作,但不能在生產環境中工作,因此在打擊生產之前您甚至不知道有問題。 – Vadorequest

+0

誠然,儘管任何以root身份運行的合理應用程序在執行完它所需的root privs(例如,偵聽端口80)之後應立即放棄權限。但提出的答案是一個更好的解決方案。在您的生產環境中,_something_也必須在端口80上進行監聽,所以如果您想要與生產環境中的內容緊密匹配,您可能必須設置一些非常相似的內容(反向代理?)。 – robertklep

回答

2

您可以使用Mac端口轉發。綁定到80端口需要root權限(低於1024(?)的任何東西都需要root權限),最好不要用root運行開發應用程序。

您可以使用pfctl端口轉發

例如要轉發端口80到8080

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/

您還可以使用ipfw(在埃爾卡皮坦不可用)

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

不錯的解決方案,雖然'ipfw'不存在了(因爲El Capitan,我認爲)。 – robertklep

+0

@robertklep修復,謝謝。 – Ryan

+0

'echo「rdr將inet proto tcp從任何端口傳遞到任何端口80 - > 127.0.0.1 port 8080」| sudo pfctl -ef -'完美適用於優勝美地! :) – Vadorequest