Я только что столкнулся с проблемой, когда запрос на localhost:8080
from curl попадал на другой сервер, чем тот же запрос, сделанный из 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 против 6?
Если вам интересно, node попал в другой процесс node, а curl - в java-процесс. Процесс java был запущен после процесса узла.
Это может быть один и тот же порт, но это не один и тот же адрес или даже одно и то же семейство адресов! Да, IPv4 по сравнению с IPv6 имеет значение.
Чтобы устранить проблему, используйте желанный привязка процесса к семействам адресов IPv4 и IPv6.