我有多个Node应用程序(基于Express框架构建).
现在我把它们放在这样 -
/var/www/app1/var/www/app2/var/www/app3现在我想在同一个端口上运行这3个应用程序(例如8080).那可能吗 ?
需要注意的一点是,每个应用都有这样的常见路线 -
app.get('/', func...);app.get('/about', func...);app.post('/foo', func...);app.post('/bar', func...);基本上我想像你可以用Apache/PHP设置那样做.
所以当你有一个LAMP堆栈时 -
/var/www/app1/var/www/app2/var/www/app3您可以轻松地访问它们作为不同的应用程序 -
localhost/app1localhost/app2localhost/app3我偶然发现了一些有趣的东西,我无法解释它,谷歌搜索也没有成效。
我有一台 Express 服务器,即服务器 1,绑定到localhost:
const express = require('express')
const app = express()
app.get('/', (req, res) => res.send('server 1'))
app.listen(4000, 'localhost')
Run Code Online (Sandbox Code Playgroud)
node 37624 user 27u IPv4 0x681653f502970305 0t0 TCP localhost:4000 (LISTEN)
Run Code Online (Sandbox Code Playgroud)
我有另一个 Express 服务器,即服务器 2,绑定到以下所有接口0.0.0.0:
node 37624 user 27u IPv4 0x681653f502970305 0t0 TCP localhost:4000 (LISTEN)
Run Code Online (Sandbox Code Playgroud)
node 37624 user 27u IPv4 0x681653f502970305 0t0 TCP localhost:4000 (LISTEN)
node 37693 user 25u IPv4 0x681653f4fdbdc005 0t0 TCP *:4000 (LISTEN)
Run Code Online (Sandbox Code Playgroud)
Curling0.0.0.0给出了来自服务器 1 的响应,服务器 1 绑定到localhost,因此显然这两个是冲突的。
然而,不知何故,这并没有引发人们预期的错误,EADDRINUSE,这怎么可能?