【发布时间】:2018-07-21 18:44:27
【问题描述】:
我正在尝试在 AWS EC2 上使用 Nginx 作为代理服务器运行带有 socket.io 的 NodeJs 应用程序并收到此错误:
加载资源失败:服务器响应状态为 404(未找到)
/socket.io/?EIO=3&transport=polling&t=MIsbMS_:1
我正在关注此页面指令https://www.nginx.com/blog/nginx-nodejs-websockets-socketio/
我的nginx设置如下:
upstream socket_nodes {
ip_hash;
server 127.0.0.1:8080;
}
server {
listen 80 ;
listen [::]:80 ;
root /home/ubuntu/NodejsProjects/Node3;
index index.html index.htm index.nginx-debian.html;
server_name mydomainname.com www.mydomainname.com;
location / {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass http://socket_nodes;
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
}
我的 index.js 有以下代码
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
server.listen(8080);
app.get('/', function (req, res) {
res.sendFile(__dirname + '/index.html');
});
io.sockets.on('connection',function (socket){
socket.on('test', function () {
console.log(data);
socket.emit('testCl', 'Test successful!!');
});
});
在我的 index.html 中有
<p id='pp'></p>
<button id="Btn1" onclick="cc();">Get test results</button><br/>
<script>
var socket = io();
var cc=function(){
socket.emit('test');
};
socket.on('testCl', function (data) {
console.log(data);
$("#pp").text(data);
});
</script>
花了几个小时在网上搜索后,我在 html 文件中尝试了很多东西但没有成功,例如
var socket = io();
var socket = io.connect('http://localhost');
var socket = io.connect('http://localhost:8080');
var socket = io.connect('http://www.mydomainname.com:8080');
var socket = io.connect('http://myprivateIP:8080');
var socket = io.connect('http://mypublicIP:8080');
请提供任何帮助。
【问题讨论】:
标签: node.js amazon-web-services nginx socket.io reverse-proxy