Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Last revision Both sides next revision | ||
litespeed_wiki:proxy:lsws-as-a-proxy-rewrite [2018/05/22 18:36] qtwrk [Add the remote proxy as an external app] |
litespeed_wiki:proxy:lsws-as-a-proxy-rewrite [2021/03/30 14:44] Jackson Zhang [How to set up the server as a proxy via rewrite rules through .htaccess] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== How to set up the server as a proxy via rewrite rules through .htaccess ====== | ====== How to set up the server as a proxy via rewrite rules through .htaccess ====== | ||
+ | LiteSpeed 6.0 and above do support ''ProxyPass'' directive as well as rewrite rule-based proxy with ''[P]'' without setting up an external app. | ||
- | LiteSpeed works with Apache mod_proxy directives, but there is an extra step to add an external app of the proxy in LSWS configuration to make it work fully. | + | LiteSpeed 5.4.x and earlier version do not support ''ProxyPass'', ''ProxyPassReverse'' and other mod_proxy directives(starting from LSWS 5.3.6, ''ProxyPass'' and-''ProxyPassMatch'' support for AJP backend have been added but not supported for non-AJP backend). However, you can use rewrite rules with ''[P]'' and set up an external app of the proxy in LSWS configuration to make it work fully. |
===== Add the remote proxy as an external app ===== | ===== Add the remote proxy as an external app ===== | ||
Line 24: | Line 25: | ||
5. After saving, restart LSWS | 5. After saving, restart LSWS | ||
- | ===== Use rewrite rules or mod_proxy directive in .htaccess===== | + | ===== Use rewrite rules in .htaccess ===== |
==== Example 1: Proxy to a site on the backend with the same domain name.==== | ==== Example 1: Proxy to a site on the backend with the same domain name.==== | ||
* In Shell or an Editor, edit the .htaccess file normally located in virtualhost document root and add the following: | * In Shell or an Editor, edit the .htaccess file normally located in virtualhost document root and add the following: | ||
Line 40: | Line 41: | ||
For the above example in .htaccess: | For the above example in .htaccess: | ||
<code>RewriteRule ^(.*)$ http://Local_proxy/$1 [P,E=Proxy-Host:www.example.com]</code> | <code>RewriteRule ^(.*)$ http://Local_proxy/$1 [P,E=Proxy-Host:www.example.com]</code> | ||
+ | |||
+ | ==== Example 3: Proxy to a site on the same server ==== | ||
+ | If acting as a proxy to a site on the same server, you can use ''127.0.0.1:<port>'' without manually creating an external app. The rewrite rule proxy target will be created automatically if the target is using ''127.0.0.1:<port>''. When using a domain, even if the domain is hosted on the same server, the external application won't be created automatically. This will lead to a 500 status code as the server cannot find the external application. You will need to create an external app manually, in this case. | ||
+ | |||
+ | For example, ''www.example1.com'' is hosted on the same server. If you want to run the following proxy with domain, you will need to create an external app: | ||
+ | <code> | ||
+ | RewriteEngine On | ||
+ | RewriteRule ^(.*)$ https://www.example1.com:5000/$1 [P,L] | ||
+ | </code> | ||
+ | |||
+ | Alternatively, simply using the following code, an external app will be created by the server automatically: | ||
+ | <code> | ||
+ | RewriteEngine On | ||
+ | RewriteRule ^(.*)$ https://127.0.0.1:5000/$1 [P,L] | ||
+ | </code> | ||
+ | |||
+ | ==== Example 4: cPanel webmail-like proxy ==== | ||
+ | cPanel's ''www.domain.com/webmail'' proxy loads one installation at ''<nowiki>http://127.0.0.1/rainloop/</nowiki>''. | ||
+ | |||
+ | An Apache user without a control panel who wants to copy this behavior may achieve it with ''ProxyPass'', like so: | ||
+ | ProxyPass "/webmail/" "http://127.0.0.1/rainloop/" | ||
+ | |||
+ | But LiteSpeed doesn't support ''ProxyPass'' in this case. Instead, a LiteSpeed user may simply use the following rewrite rule in the virtual host's Apache configuration. No need to create an external app: | ||
+ | RewriteRule /webmail/(.*) http://127.0.0.1/rainloop/$1 [P] | ||
===== Testing ===== | ===== Testing ===== |