Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js-如何从url中删除端口?_Url_Node.js_Port_Socket.io - Fatal编程技术网

Node.js-如何从url中删除端口?

Node.js-如何从url中删除端口?,url,node.js,port,socket.io,Url,Node.js,Port,Socket.io,我使用node.js和socket.io 我的应用程序在端口3000上运行。应用程序从url开始:mydomain.com:3000/ 我想从mydomain.com运行应用程序-我想从url中删除端口 在何处以及如何设置此设置?首先,您可能希望从本地主机“127.0.0.1”运行应用程序。只需在node.js设置中省略端口,即可删除该端口。默认情况下,web浏览器在端口80上查找服务器。如果出于某种原因希望服务器在端口3000上运行,则必须将其包含在URL中 找到您的呼叫并将端口从3000更改

我使用node.js和socket.io

我的应用程序在端口3000上运行。应用程序从url开始:mydomain.com:3000/

我想从mydomain.com运行应用程序-我想从url中删除端口


在何处以及如何设置此设置?

首先,您可能希望从本地主机“127.0.0.1”运行应用程序。只需在node.js设置中省略端口,即可删除该端口。默认情况下,web浏览器在端口80上查找服务器。如果出于某种原因希望服务器在端口3000上运行,则必须将其包含在URL中

找到您的呼叫并将端口从
3000
更改为
80
。不要忘记,为了在Linux系统上绑定到小于1024个端口,您必须使用
CAP\u NET\u BIND\u服务
功能运行程序(有关详细信息,请参阅
capabilities(7)
root
权限将包含此权限和其他权限。

如果您想像您描述的那样在“没有端口”的情况下运行它,您实际上将在端口80上运行它。没有root权限,您无法执行此操作

所以不是

node server.js
你需要

sudo node server.js

这是假设您在试图运行它的计算机上拥有sudo权限。否则你会遇到每一个问题。这就是sarnold想告诉你的。

我就是这样做的,因为我也在使用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>

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/

没有解决方案吗?它必须将应用程序设置为在此端口上的服务器上运行,而不使用url。对不起,我误解了。我不相信有一种方法可以在端口3000上运行而不将其包含在URL中。我可能错了。我试图将端口设置为80,但应用程序被丢弃。这是禁止的,“申请被取消了”?这是什么意思?您是否以root用户身份运行它?您可以吗?Conosle写入行:info-socket.io已启动,warn-error已引发:error:EACCES,权限被拒绝以
root
身份运行命令可以解决问题,但这会使您的站点非常不安全。正确的解决方案是使用反向代理,然后将一个目录(如“mydomain.com/app”)绑定到端口3000。在端口80上运行node.js服务器应用程序被认为是不安全的。此外,搜索会发现:嗨,我想做完全相同的事情,但失败了。在错误日志中显示
[Fri Nov 29 18:45:45 2013][error](111)连接被拒绝:代理:HTTP:尝试连接到my.IP.addr.0:3000(www.mydomainname.com)失败
。您正在使用哪个代理模块(http、ftp、ajp等)?嘿,Charles-我正在使用代理的默认apache设置。为了让代理工作,我唯一做的改变就是在我的vhosts中添加了这一点。我的apache配置已加载所有代理模块。apache正在我的配置中监听端口80。您没有加载任何模块吗?如何在Windows systemDown voting中运行,因为在端口80上运行node.js应用程序被认为是不安全的。