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
1 |
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
1 |
vi /etc/nginx/conf.d/ws-domain.com.conf |
In the above, replace domain.com with the actual domain name.
Add following content
1 2 3 4 5 6 7 8 |
map $http_upgrade $connection_upgrade { default upgrade; '' close; } upstream websocket { server 127.0.0.1:8080; } |
Create file
1 |
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
1 2 3 4 5 6 7 |
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
1 |
systemctl restart nginx |
In your application code, find
1 |
var websocket_server = new WebSocket("ws://domain.com:8080"); |
Replace with
1 |
var websocket_server = new WebSocket("wss://domain.com/wsapp/NNN"); |
See Cpanel Server