当前位置: 首页 > 后端技术 > Node.js

connectECONNREFUSED127.0.0.1-80异常解决方法

时间:2023-04-03 20:22:35 Node.js

nuxt部署到production,正常点击跳转没问题。但是刷新页面会出现以下错误。connectECONNREFUSED127.0.0.1:80atTCPConnectWrap.afterConnect[asoncomplete](net.js:1113:14)我的解题过程:我发现如果页面没有使用asyncasyncData方法请求后台地址刷新页,没有问题。如果使用该方法请求后台刷新页面,会报上述异常。一开始我以为是代理问题。我一直在修改nuxt.config.js中的proxy,结果没用。然后网上有人说在async中使用axios向服务器发送请求asyncData是填写完整的http://serverip:port/api,但是为什么我的时候要填写完整的地址有委托代理吗?最后修改package.json中的地址,将host设置为127.0.0.1或localhost。项目启动后没有问题,但是页面打不开。设置host为服务器内网ip地址后,项目启动没有问题,页面正常打开。没有asyncasyncData方法刷新页面是正常的,但是用这个方法刷新页面会出现异常。connectECONNREFUSED127.0.0.1:80atTCPConnectWrap.afterConnect[asoncomplete](net.js:1113:14),设置host为0.0.0.0后,页面后项目正常启动,页面正常刷新。查看进程和端口也正常,为服务器内网ip:80。所以我的解决方法:修改package.json中的host为0.0.0.0"config":{"nuxt":{"host":"0.0.0.0","port":"80"}}about0.0.0.0,内网ip,公网ip,127.0.0.1其实我们只是认为我们的服务器本身有很多ip,公网ip,内网ip,localhost,127.0.0.1,如果我们在生产环境的节点服务指定了内网ip,那么使用公网ip访问会报错。而0.0.0.0指的是服务器中的一个集合,里面包含了所有指向自己的ip集合。摘自https://www.cnblogs.com/sddai...127.0.0.1和0.0.0.0地址的区别在做网络编程的时候,会设置服务器的IP地址为127.0.0.1。然后绑定端口,开始监听。但是对于服务器来说,除了127.0.0.1之外,还有内网IP和公网IP。如果在本地绑定,则只能通过局域网传输。那么,应该如何绑定呢?先回顾一下IP类型:IP地址分为5类,即A~E,它们的分类是根据net-id占用的字节长度和网络号的前几位。A类地址:网络号占1个字节。网络号的第一位固定为0。B类地址:网络号占2个字节。网络号的前两位固定为10。C类地址:网络号占3个字节。网络号的前三位固定为110。D类地址:前四位为1110,用于组播,即一对多通信。E类地址:前四位为1111,留待以后使用。还有一些特殊地址:127.0.0.1:环回地址。这个地址指的是计算机本身,主要是预留用来测试本机的TCP/IP协议是否正常。只要使用这个地址发送数据,在网络传输过程中就不会出现数据包。10.x.x.x、172.16.x.x~172.31.x.x、192.168.x.x:这些地址用于内网。用作私有网络地址,这些地址不连接到外部网络。255.255.255.255:广播地址0.0.0.0:该IP地址只能作为IP数据报中的源IP地址,发生在设备启动但不知道自己的IP地址时。从这个角度来看,两者都属于特殊地址。在IPv4中,0.0.0.0地址用于指示无效、未知或不可用的目的地。*在服务器中,0.0.0.0是指本机所有的IPV4地址,如果一台主机有两个IP地址,192.168.1.1和10.1.2.1,主机上的一个服务监听地址是0.0.0.0,那么这个服务可以可以通过两个ip地址访问。*在路由中,0.0.0.0代表默认路由,即在路由表中找不到完全匹配的路由时对应的路由。用途:DHCP分配前,表示本机。用作任何主机的默认路由。用作服务器,表示本机任意IPV4地址。localhost:只是一个域名,可以代表任何IP地址。默认值为127.0.0.1,位于/etc/hosts文件下。在实际应用中,一般我们在服务端绑定端口的时候可以选择绑定到0.0.0.0,这样我的服务访问者就可以通过我的多个ip地址来访问我的服务了。比如我有一个服务器,一个外网A,一个内网B,如果我绑定的端口指定0.0.0.0,那么我的应用可以通过内网地址或者外网地址访问。