Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
litespeed_wiki:proxy:lsws-as-a-websocket-proxy [2018/01/19 20:33]
Lisa Clarke
litespeed_wiki:proxy:lsws-as-a-websocket-proxy [2020/01/09 00:36] (current)
Lisa Clarke [How to Configure LSWS in cPanel as a WebSocket Proxy] Proofreading
Line 2: Line 2:
  
 ===== What's a WebSocket? ===== ===== What's a WebSocket? =====
-WebSocket changes the way the Internet works: It is a protocol that allows the server and the client to have a bidirectional conversation. The client doesn’t just request content from the server. The server also sends content to the client whenever there’s content to be sent (without waiting to be asked). This bidirectional conversation allows for realtime web experiences. ​While HTTP tries to simulate real-time interaction at great expense (through incessant refreshing),​ WebSocket makes realtime interaction a reality. This upgrades all sorts of web applications:​ stock tickers, data center monitors, news feeds… ​But probably the most exciting feature of realtime Internet is the ability for multiple users to see and react to things they each do in real time.+WebSocket changes the way the Internet works: It is a protocol that allows the server and the client to have a bidirectional conversation ​where the client doesn’t just request content from the server ​but the server also sends content to the client whenever there is content to be sent (without waiting to be asked). This bidirectional conversation allows for realtime web experiences. ​Where HTTP tries to simulate real-time interaction at great expense (through incessant refreshing),​ WebSocket makes realtime interaction a reality. This upgrades all sorts of web applications:​ stock tickers, data center monitors, news feeds… ​but probably the most exciting feature of realtime Internet is the ability for multiple users to see and react to each other'​s actions ​in real time.
  
 LiteSpeed Web Server can work as a WebSocket proxy. See how: LiteSpeed Web Server can work as a WebSocket proxy. See how:
  
 ===== Setup WebSocket Backend ===== ===== Setup WebSocket Backend =====
-The first step is to have a working WebSocket backend set up, but explaining ​how to do that is out of this wiki's scope. You can consult ​online tutorials. One example ​involves using an Nginx backend with an [[https://​github.com/​slact/​nchan|nchan module]].+The first step is to have a working WebSocket backend set up. Explaining ​how to achieve this is out of this wiki's scope but there are plenty of online tutorials ​that can be consulted. One such tutorial ​involves using an Nginx backend with an [[https://​github.com/​slact/​nchan|nchan module]].
  
 ===== Test the Backend WebSocket ===== ===== Test the Backend WebSocket =====
Line 17: Line 17:
 {{ :​litespeed_wiki:​proxy:​add-websocket-proxy1.png?​600 |}} {{ :​litespeed_wiki:​proxy:​add-websocket-proxy1.png?​600 |}}
  
-As you can see, it tested successfully +This screenshot shows a successful test. If it had failed, you would see a ''​Simple WebSocket Client undefined''​ error, like so:
- +
-If it had failed, you would see a ''​Simple WebSocket Client undefined''​ error, like so:+
  
 {{ :​litespeed_wiki:​proxy:​add-websocket-proxy2-testfail.png?​600 |}} {{ :​litespeed_wiki:​proxy:​add-websocket-proxy2-testfail.png?​600 |}}
  
-===== How to Configure LSWS as a WebSocket Proxy ===== +===== How to Configure LSWS Native Virtual Host as a WebSocket Proxy ===== 
-In the LSWS Web Console, navigate to **Virtual Host (Native) > General > Web Socket Proxy Setup**+In the LSWS WebAdmin ​Console, navigate to **Virtual Host (Native) > General > Web Socket Proxy Setup**
  
 {{ :​litespeed_wiki:​proxy:​add-websocket-proxy3.png?​800 |}} {{ :​litespeed_wiki:​proxy:​add-websocket-proxy3.png?​800 |}}
 {{ :​litespeed_wiki:​proxy:​add-websocket-proxy4.png?​800 |}} {{ :​litespeed_wiki:​proxy:​add-websocket-proxy4.png?​800 |}}
  
-Set up **URI** and **Address**.+Configure ​**URI** and **Address**. ​The URI can be a plain URI (starting with "/"​). The **URI** can be an exact match. If a plain URI ends with a "/",​ then this WebSocket backend will include all sub-URIs under this URI, such as **/sub/** should include /sub/001, /sub/002... etc.  However, the regular expression, such as ''/​sub/​*'',​ will **not** work for WebSocket. 
  
 Save and restart LSWS. Save and restart LSWS.
 +
 +===== How to Configure LSWS in cPanel as a WebSocket Proxy =====
 +
 +LSWS supports ''​ProxyPass''​ for WebSocket, used like so: 
 +
 +<​code>​ProxyPass / ws://​localhost:​3000/</​code>​
 +
 +**Note**: This directive must be placed in an Apache vhost configuration file, not in .htaccess.
 +
 +For example, for RocketChat, create two files like these, replacing ''​EXAMPLE''​ and ''​www.example.com''​ with the cPanel username and the actual domain:
 +
 +''/​etc/​apache2/​conf.d/​userdata/​ssl/​2_4/​EXAMPLE/​www.example.com/​proxy.conf''​
 +
 +''/​etc/​apache2/​conf.d/​userdata/​std/​2_4/​EXAMPLE/​www.example.com/​proxy.conf''​
 +
 +Add the following code to both files:
 +
 +<​code><​IfModule mod_rewrite.c>​
 +RewriteEngine on
 +RewriteRule (.*) http://​localhost:​3000/​$1 [P,L]
 +ProxyPass / ws://​localhost:​3000/​
 +</​IfModule></​code>​
 +
 +Rebuild the Apache configuration file, and restart LSWS:
 +
 +<​code>/​scripts/​buildhttpdconf
 +
 +/​usr/​local/​lsws/​bin/​lswsctrl restart</​code>​
  
 ===== Final Test: The Front End ===== ===== Final Test: The Front End =====
Line 39: Line 66:
   wss://​example.com/​sub/​xx1   wss://​example.com/​sub/​xx1
  
-As you can see, all is working fine:+If all is working fine you should see the following:
  
 {{ :​litespeed_wiki:​proxy:​add-websocket-proxy5.png?​600 |}} {{ :​litespeed_wiki:​proxy:​add-websocket-proxy5.png?​600 |}}
  
  • Admin
  • Last modified: 2018/01/19 20:33
  • by Lisa Clarke