2 回答
TA贡献1784条经验 获得超7个赞
我能够通过结合这两个答案来使其发挥作用。
nginx.conf 现在看起来像
http {
server_tokens off;
server {
listen 80;
location / {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_pass http://web:8080/;
}
location /websocket {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://web:8080/websocket;
}
}
}
然后将 JavaScript 文件ws://更改为wss://
<script>
let socket = new WebSocket("wss://myexamplesite.com/websocket")
console.log("Attempting Websocket Connection")
socket.onopen = () => {
console.log("Successfully Connected");
socket.send("Hi From the Client!")
}
socket.onclose = (event) => {
console.log("Socket Closed Connection: ", event)
}
socket.onmessage = (msg) => {
console.log(msg);
}
socket.onerror = (error) => {
console.log("Socket Error: ", error)
}
</script>
TA贡献1831条经验 获得超4个赞
首先检查 AWS ALB 配置方面的所有内容是否正确,并且请求是否已到达 Nginx 服务器,您可以在日志中检查该服务器。还可以尝试通过 Nginx 访问您的 websocket URL。您需要在 Nginx 中进行额外的配置来支持您所在位置下的 websockets,如下所述:
proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "Upgrade";
我也遇到过同样的问题,并且使用这个配置开始变得轻而易举。
注意:Websockets 肯定可以与 AWS ALB 配合使用,所以不要怀疑这一部分。
- 2 回答
- 0 关注
- 325 浏览
添加回答
举报