SecurityError: The operation is insecure. socket.io.js (line 2371)
this.websocket = new Socket(this.prepareUrl() + query);
TypeError: this.websocket is undefined socket.io.js (line 2438)
this.websocket.close();
upstream dev {
server 127.0.0.1:8001;
}
server {
# Listen on 80 and 443
listen 80;
listen 443 ssl;
server_name _;
ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem;
ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
location /dev/ {
if ($ssl_protocol = "") {
rewrite ^ https://$host$request_uri? permanent;
}
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://dev/;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
<script src="./socket.io/socket.io.js"></script>
<script>
var socket = io.connect('http://'+window.location.host+':8001');
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
});
</script>
var app = require('http').createServer(handler)
, io = require('socket.io').listen(app)
, fs = require('fs')
app.listen(8001);
function handler (req, res) {
fs.readFile(__dirname + '/index.html',
function (err, data) {
if (err) {
res.writeHead(500);
return res.end('Error loading index.html');
}
res.writeHead(200);
res.end(data);
});
}
io.sockets.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
您正在通过HTTPS发送不安全的内容。试试这些:
index.html
var socket = io.connect('https://'+window.location.host+':8001'); //added https...
server.js:
var app = require('https').createServer(handler)
, io = require('socket.io').listen(app)
, fs = require('fs');
var options = {
key: fs.readFileSync('crts/ssl.key'), //the route to your certs.
cert: fs.readFileSync('crts/ssl.cert'),
ca: fs.readFileSync('crts/ssl.ca')
};
https.createServer(options, app).listen(8001); //https server
function handler (req, res) {
fs.readFile(__dirname + '/index.html',
function (err, data) {
if (err) {
res.writeHead(500);
return res.end('Error loading index.html');
}
res.writeHead(200);
res.end(data);
});
}
io.sockets.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
我有一个与节点.js服务器通信的小角度应用程序。两者都部署在 aws 上,我使用 Nginx 反向代理在端口 4000 上访问节点.js服务器。 nodejs.server 的所有endpoint都工作正常,除了 socket.io 连接。当我在我的机器中运行两个应用程序(前端应用程序和节点.js服务器)时,socket.io 连接工作正常,但是当我尝试在 aws 上部署它时,我在前端应用程序中收
据我所知,问题必须与Ngnix反向代理和websockets如何路由有关。服务器对ping请求的答复似乎没有发送到客户端。但我似乎无法确定原因。任何帮助都是非常感谢的。
问题内容: 我已经在托管jenkins和其他一些应用程序的ubuntu实例上将nginx设置为反向代理。我正在使用nginx根据相对路径路由到各种应用程序。从客户端到nginx的所有流量都通过https。在防火墙后面,nginx将所有内容通过http路由到配置的路径和端口号。看起来像这样: Nginx配置文件的相关部分是这样的: 问题是jenkins使用简单的身份验证,并且在成功登录后会发送302
Nginx的配置文件如下: server { listen 80; #此处应该配置你的域名: server_name doc.iminho.me; charset utf-8; #此处配置你的访问日志,请手动创建该目录: access_log /var/log/nginx/webhook.iminho.me/access.log
然后,可以通过domain.com/socket/访问socket.io(获得消息Welcome to socket.io)。另外,静态内容也被交付,但是我无法找到通过端口80加载“socket.io/socket.io.js”文件的任何方法。 在干净的方式上这可能吗?
主要内容:1. 代理服务器介绍,2. 将请求传递给代理的服务器,3. 传递请求标头,4. 配置缓冲区,5. 选择传出IP地址本文介绍代理服务器的基本配置。 您将学习如何通过不同协议将NGINX请求传递给代理的服务器,修改发送到代理服务器的客户端请求标头,以及配置来自代理服务器的响应缓冲。 代理服务器的基本配置目录 代理服务器介绍 将请求传递给代理的服务器 传递请求标头 配置缓冲区 选择传出IP地址 1. 代理服务器介绍 代理通常用于在多个服务器之间分配负载,无缝地显示来自不同网站的内容,或者通过