2012-03-02 63 views
22

我使用node.js和socket.io。Node.js - 我怎樣才能從網址中刪除端口?

我的應用程序運行在端口3000的應用程序從URL開始於:mydomain.com:3000/

我想從mydomain.com運行應用程序 - 我想刪除端口從網址。

在哪裏以及如何設置此設置?

+0

這與node.js無關。這是http的基礎知識。 – TheHippo 2013-05-02 19:26:45

+0

此外,搜索會帶來這個:http://stackoverflow.com/questions/14303690/nodejs-domain-without-port-number – TheHippo 2013-05-02 19:27:56

回答

19

找到您的server.listen呼叫並將端口從3000更改爲80。不要忘記,您必須使用CAP_NET_BIND_SERVICE功能運行該程序(有關詳細信息,請參見capabilities(7)),以便在Linux系統上綁定到小於1024的端口。 root特權將包含此等特權。

+0

我試圖將端口設置爲80應用程序已被刪除。這是禁止的。 – Jenan 2012-03-02 00:56:06

+0

「應用程序被刪除」?那是什麼意思?你是否將它作爲'root'運行?你可以嗎? – sarnold 2012-03-02 00:58:18

+0

Conosle寫入行:info - socket.io開始, 警告 - 錯誤提出:錯誤:EACCES,權限被拒絕 – Jenan 2012-03-02 01:01:59

1

首先,您可能希望從本地主機「127.0.0.1」運行應用程序。您可以通過在node.js設置中忽略端口來刪除端口。默認情況下,Web瀏覽器在端口80上查找服務器。如果您希望服務器由於某種原因在端口3000上運行,則必須將其包含在URL中。

+0

有沒有解決方案?它必須將應用程序設置爲在沒有url的端口上的服務器上運行。 – Jenan 2012-03-02 00:54:53

+0

對不起,我誤解了。我不相信有沒有辦法在端口3000上運行,而不包括在URL中。但我可能是錯的。 – feralcreature 2012-03-02 00:57:29

10

如果您想像您描述的那樣「無端口」地運行它,您實際上將在端口80上運行它。如果沒有root權限,則無法執行此操作。

所以不是

node server.js 

你需要

sudo node server.js 

這是假設你的機器上你想上運行sudo的權限。否則,你會遇到EACCESS問題。這就是sarnold試圖告訴你的。

+0

如何在Windows系統中運行 – Trojan 2016-12-02 14:09:08

6

這是我做到這一點的原因,因爲我使用Apache以及我不能使用端口80,因爲它保留它。所以,我設置了代理通行證。我設置我的/ src文件夾被忽略。

<VirtualHost *:80> 
    DocumentRoot "/Library/WebServer/Documents/www.mysite.com" 
    ServerName local.www.mysite.com 
    ServerAlias local.www.mysite.com 
    ProxyPass /src ! 
    ProxyPass/http://local.www.mysite.com:3000/ 
    ProxyPassReverse/http://local.www.mysite.com:3000/ 
</VirtualHost> 
+0

嗨,我想做的是完全一樣的東西,但失敗了。在錯誤日誌中顯示:[[Fri Nov 29 18:45:45 2013] [error](111)連接被拒絕:代理:HTTP:嘗試 連接到my.IP.addr.0:3000(www.mydomainname.com) failed'。你正在使用哪個代理模塊(http,ftp,ajp等)? – Boyang 2013-11-29 18:49:57

+0

嘿查爾斯 - 我正在使用代理默認的apache設置。我改變的唯一讓代理工作的是我的虛擬主機中的這一點。我的apache配置已加載所有代理模塊。並且apache在我的配置中正在監聽端口80。你沒有加載任何模塊? – Anna 2013-12-04 13:55:57