Enable WebSocket in Cpanel Server with Nginx

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.

Advertisement

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

Add a comment

Leave a Reply

Your email address will not be published. Required fields are marked *

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Advertisement