我正在運行一個node.js服務器,它將服務端口80和其他請求。顯然這需要應用程序以root身份運行(在Linux上)。如何以非root用戶身份運行node.js?
看着這篇文章(http://syskall.com/dont-run-node-dot-js-as-root)作爲一個例子很明顯,有很簡單的方法可以允許節點作爲非root用戶運行,但是我想知道是否有人對優點/缺點有看法建議使用不同的方法:
代碼:使用setuid()在監聽端口80後建立從根端下拉到非特權用戶。
使用某種形式的代理服務器將請求重定向到一個端口> 1024(所以不需要節點作爲根用戶身份運行)使用IP錶轉發到另一個端口(同上節點將無法運行
作爲root)
感謝
Upvoted。請注意,至少在Ubuntu上,上面的'iptables'命令不是永久性的......爲了確保在下次啓動時保留該規則,您需要確保有一個啓動腳本,該腳本用於恢復'iptables'規則'iptables-restore'命令,如下所述:http://www.rackspace.com/knowledge_center/article/ubuntu-setup –
選項3是大多數NodeJS開發者部署完成網站的方式嗎?如果不是,他們通常如何允許客戶端瀏覽器連接到端口80? – trysis
取決於你的情況。較大的部署使用與選項2相同的前端負載均衡器。很多人使用使用前端負載均衡器的Heroku;再次選擇2.但是,如果您在具有root訪問權限的服務器上部署此操作,那麼我建議選項3.這很容易,您不必擔心配置反向代理。也就是說,如果這是你的選擇,那麼一定要看看Heroku。他們使部署非常容易。 – Daniel