大佬们,我现在用的nginx代理,用https可以直接访问,但wss就是不通。。。
Nginx1.22 PHP7.2 workerman4.1
这是nginx配置
server
{
listen 80;
listen 443 ssl http2;
server_name www.aaa.com;
index index.php index.html index.htm default.php default.htm default.html;
root /www/wwwroot/aaa/public;
ssl_certificate /www/server/panel/vhost/cert/www.aaa.com/fullchain.pem;
ssl_certificate_key /www/server/panel/vhost/cert/www.aaa.com/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
add_header Strict-Transport-Security "max-age=31536000";
error_page 497 https://$host$request_uri;
# websocket请求代理转发指定端口
location ~* /websocket{
proxy_pass http://127.0.0.1:2020;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header X-Real-IP $remote_addr;
}
}
这是前端代码
本人后端 前端代码是随便百度的
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<script type="text/javascript">
function WebSocketTest() {
// 打开一个 web socket
var ws = new WebSocket("wss://www.aaa.com/websocket");
ws.onopen = function () {
// Web Socket 已连接上,使用 send() 方法发送数据
ws.send("发送数据");
alert("数据发送中...");
};
ws.onmessage = function (evt) {
var received_msg = evt.data;
alert("数据已接收...");
};
ws.onclose = function () {
alert("连接已关闭...");
}
ws.onerror = function (ev) {
console.log(this, ev);
};
}
</script>
</head>
<body>
<div id="sse">
<a href="javascript:WebSocketTest()">运行 WebSocket</a>
</div>
</body>
</html>
有没有大佬帮帮忙,万分感谢!
官方文档 https://www.workerman.net/doc/workerman/faq/secure-websocket-server.html
没看到nginx有http2的设置,http2去掉试下呗
去掉了,还是不行
没有正则表达式,不用 ~*
完整的链接是这样的:https://www.aaa.com/f8dbc98207eed1281a6d813d25c90c9b/websocket 前面有一串随机数 每次都不一样
这是wss,nginx配置,JAVA不行了,市场份额越来越少了,我们好几个客户不打算用JAVA做项目,改用php+webman了
关键JAVA费时间,工资要的老高,水平又一般,一个PHP程序员顶3个JAVA
谢谢大佬,搞好了,是我们运维的问题。。。
请问一下,是运维的什么问题导致的?
试试这样
谢谢大佬,搞好了,是我们运维的问题。。。
请问楼主是怎么解决的,我遇到了同样的问题
大佬,你的问题解决了吗?请求指导一下