2012-03-02 54 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