On a Cpanel server, WebSocket server was running on port 8080. It worked fine with HTTP. After enabling HTTPS, it stopped working.
The website code had the following entry
var websocket_server = new WebSocket("ws://domain.com:8080");
This Cpanel server had ea-nginx (Nginx provided by Cpanel) installed.
To fix the error, I created a file
vi /etc/nginx/conf.d/ws-domain.com.conf
In the above, replace domain.com with the actual domain name.
Add following content
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream websocket {
server 127.0.0.1:8080;
}
Create file
vi /etc/nginx/conf.d/users/CPANEL_USER/domain.com/wss.conf
Replace CPANEL_USER with the actual Cpanel user name for the website. domain.com with real domain name,
Add following
location /wsapp/ {
proxy_pass http://websocket;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
proxy_set_header Host $host;
}
Restart nginx
systemctl restart nginx
In your application code, find
var websocket_server = new WebSocket("ws://domain.com:8080");
Replace with
var websocket_server = new WebSocket("wss://domain.com/wsapp/NNN");
See Cpanel Server

Leave a Reply