Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
litespeed_wiki:proxy:lsws-as-a-websocket-proxy [2018/01/19 22:01] Michael Alegre [What's a WebSocket?] |
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 7: | Line 7: | ||
===== 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 |}} | ||