应用程序在本地主机上运行良好。但当它连接到服务器时出现错误。我通过端口 22 连接服务器
但是我的应用程序连接服务器端口80。
这是错误
Error: listen EADDRNOTAVAIL Error: listen EADDRNOTAVAIL
at errnoException (net.js:904:11)
at Server._listen2 (net.js:1023:19)
at listen (net.js:1064:10)
at net.js:1146:9
at dns.js:72:18
at process._tickCallback (node.js:419:13)
at Function.Module.runMain (module.js:499:11)
at startup (node.js:119:16)
at node.js:906:3
我跑netstat -tulpn | grep 22
结果:
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 683/sshd
tcp6 0 0 :::22 :::* LISTEN 683/sshd
但我跑了netstat -tulpn | grep 80
无任何显示。
有任何帮助吗?这是服务器故障吗?
跑步netstat -nlt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 127.0.0.1:27017 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:5901 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:5902 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:6001 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:6002 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 ::1:631 :::* LISTEN
跑步netstat -anp | grep :80
tcp 1 0 162.243.145.226:60728 91.189.94.25:80 CLOSE_WAIT 1726/ubuntu-geoip-p
tcp 1 0 162.243.145.226:47842 74.125.239.148:80 CLOSE_WAIT 8104/epiphany-brows
tcp 1 0 162.243.145.226:60727 91.189.94.25:80 CLOSE_WAIT 1417/ubuntu-geoip-p
tcp 1 0 162.243.145.226:58818 198.41.30.199:80 CLOSE_WAIT 8104/epiphany-brows
这是来源
答案1
您是否以 root 身份运行该程序?
如果您不是以 root 身份运行,则您无法将任何程序绑定到 1024 以下的端口。它们被视为特权端口,只有 root 可以使用它们。
如果您想以 root 身份运行,请不要这样做。如果有人利用您的程序并获得 shell,并发现它是 root shell,则以 root 身份运行可能会产生问题。
以非特权用户身份运行,并将端口从 80 更改为 1024 以上的端口。
答案2
从man 7 ip
ERRORS
...
EADDRNOTAVAIL
A nonexistent interface was requested or the requested source
address was not local.
您可能在配置中错误输入了要绑定的监听 IP 地址。