【发布时间】:2017-04-29 18:17:53
【问题描述】:
我在 Ubuntu 服务器上设置了一个node/express.js/socket.io 应用程序,该应用程序在端口 3002 上运行。我已经打开了机器上的所有端口。
当我转到 11.111.111.1:3002/ 时,一切都运行良好(socket.io 和 express.js)。我正在尝试将应用程序代理传递给/mediaDev/,这似乎有效,因为我从 express.js 或节点收到一条错误消息,上面写着:
“无法获取 /mediaDev”
如果找不到节点应用程序返回 502 Bad Gateway。
但是通过我的 IP 地址和端口直接访问应用程序,应用程序可以正常运行。
简化的 NGINX:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
location ~ ^/mediaDev {
proxy_pass http://localhost:3002;
}
}
与服务内容相关的node.js:
var app = express()
app.user(bodyParser.urlencoded({ extended:false}))
app.use(bodyParser.json())
app.set('views', path.join(__dirname, 'views'))
app.set('view engine', 'ejs')
app.get('/', function (req, res) {
res.render('index')
})
var server = app.listen(PORT, function () {
console.log("listening on port 3002")
})
var io = require('socket.io')(server, {
path: '/mediaDev/socket.io'
})
注意:在 IP 地址上 express.js 和 socket.io 都在工作。在实际的域快递上返回错误,但我的 socket.io 路径 /mediaDev/socket.io 仍然有效。
我觉得上面的内容有点奇怪。如果我是通过/mediaDev 的代理并让我的socket.io 路径/mediaDev/socket.io 不应该出现错误并且实际上是/mediaDev/mediaDev/socket.io?
【问题讨论】:
-
您是要代理_传递整个连接到端口 3002 还是只是代理 socket.io?
-
整个连接
标签: javascript node.js express nginx socket.io