我刚刚遇到了一个问题,即从curl发出的对localhost:8080的请求与从Node内发出的同一个请求不同。 lsof -i :8080表明两个进程都绑定到同一个端口上:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME node 51961 mball 14u IPv4 0xd980e0df7f175e13 0t0 TCP *:http-alt (LISTEN) java 62704 mball 320u IPv6 0xd980e0df7fe08643 0t0 TCP *:http-alt (LISTEN)
这怎么可能? 他们绑定到不同的接口上吗? 或者是IPv4 vs 6?
如果你好奇,节点正在击中另一个节点进程,curl正在击中java进程。 java进程在节点进程之后启动。
他们可能是同一个端口,但他们不是同一个地址 – 甚至是同一个地址系列! 是的,IPv4与IPv6有关系。
要解决此问题,请将所需进程绑定到IPv4和IPv6地址系列。