繁体   English   中英

CWP: SSL + WebSocket + Ngnix

[英]CWP: SSL + WebSocket + Ngnix

我的 CentOS 7 + CWP 面板配置为:

Nginx & Apache Additional Options: php-cgi/suphp, nginx/php-fpm, apache/php-fpm, proxy HTTP: Nginx (80) --> Apache (8181) HTTPS: Nginx (443) --> Apache (8181 )

我想运行一个 WebSocket 应用程序,该应用程序使用本地主机地址 0.0.0.0:8282 进行通信所以我已经放置了一个 cron 作业来运行我的聊天服务器 WebSocket 应用程序在每个服务器启动时使用以下命令:

PHP index.php chatserver server

在 SSH 控制台中,我可以看到服务器运行没有任何问题:

在主机 0.0.0.0:8282 上运行服务器

但是在浏览器客户端我可以看到这样的错误:

WebSocket 连接到 'wss:// :8282/? ' 失败:连接建立错误:net::ERR_CONNECTION_REFUSED socket.js?v= :** WebSocket 连接到 'wss:// :8282/?***' 失败:连接建立错误:net::ERR_CONNECTION_REFUSED

Looks like Nginx doesn't let to pass the socket connection on the port 8282. Could you please to help me to change the Nginx configuration file of the specific domain that works over SSL to successfully establish WebSocket connection to the port 8282 and connected to my本地主机聊天服务器。 我将不胜感激。

该错误表明 websocket 无法通过端口 8282 连接,您需要为此设置 TLS 证书,因为 WebRTC 需要安全连接。

我相信您的问题的答案就在这里 - 如何创建安全(TLS/SSL)Websocket 服务器

我找到了一种使用 nginx 和 CWP 将服务器的 websocket 端口重定向到端口 80(或 wss 到 443)的方法。

在 vhosts conf 文件(WebServers Conf Editor > /etc/nginx/conf.d/vhosts/ 选项卡)上,您应该找到location / {... }部分。

将整个location / {... }部分替换为:

location / {
  proxy_set_header HOST $host;
  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_pass_request_headers on;
  proxy_pass http://YOUR_SERVER_IP:WEBSOCKET_PORT;
  proxy_http_version 1.0;
  proxy_set_header Upgrade $http_upgrade;
  proxy_set_header Connection "Upgrade";
}

您应该只使用相应的信息更改YOUR_SERVER_IPWEBSOCKET_PORT部分。 rest 保持原样。 如果您正在编辑 SSL conf 文件,而不是 http,您应该使用https

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM