我已经研究了RoR 5.0.0 ActionCable wss WebSocket handshake: Unexpected response code: 301的答案,但它不适用于我的情况。
我使用nginx代理作为运行在docker-container中的几个Web服务器的前台。
现在,在我的docker-container中,我有另一个nginx,其配置如下:
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream websocket {
server my-websocket-docker-container:8080;
}
server {
root /src/html;
location /websocket/ {
resolver 127.0.0.11 ipv6=off;
proxy_pass http://websocket;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
location / {
# try to serve file directly, fallback to index.php
try_files $uri /index.php$is_args$args;
}
...
}
当尝试连接到wss://www.example.com时example.com/websocket,我得到了前面提到的关于意外响应代码301的错误。当我手动 curl websocket-url时,我可以看到nginx响应告诉我“301永久移动”。但是为什么?这是从哪里来的?
有人能帮忙吗?谢谢!
2条答案
按热度按时间ohfgkhjo1#
我今天遇到了类似的问题,我使用"经典"的WebSocket API和NGINX测试一些服务之间的连接,我想出了以下的解决方案:
WebSocket示例创建:
Nginx配置:
其中:
1.端口是主机上为应用程序提供服务的端口
nqwrtyyt2#
在我的例子中,这是因为我使用了一个反向代理,带有nginx,并且它是在SSL下。
我正在尝试连接到
"ws://..."
/"http://..."
但我应该连接到
"wss://..."
/"https://..."