Reverse proxy configuration
In order to use SVR.JS as a reverse proxy, you need to install reverse-proxy-mod SVR.JS mod. Download this mod.
Configuration file of reverse-proxy-mod is reverse-proxy-config.json inside SVR.JS installation directory. Keys of configuration object are domain names (or paths from reverse-proxy-mod 1.1.1), for which its settings apply. Values are object with those properties:
- hostname - Hostname of origin server.
- port - Port of origin server.
- secureHostname - Hostname of origin server (access via HTTPS).
- securePort - Port of origin server (access via HTTPS).
- removeCustomHeaders - Option to remove custom headers set by SVR.JS. (available in reverse-proxy-mod 1.1.5 or newer)
reverse-proxy-mod 1.1.0 and newer support HTTP upgrades (including WebSocket).
If you’re using per-host URL rewrite rules and running multiple sites on one SVR.JS instance (instead of proxying them all to specific web servers; assuming that you’re using SVR.JS 3.8.0 or newer; shared hosting), use paths referring to URL rewrite destinations instead of domain names. However if you’re planning to use VPSes (virtualized servers) or run different web server instances and use SVR.JS with reverse-proxy-mod as a reverse proxy for them, use domain names instead.
If you’re using SVR.JS just as a reverse proxy (for VPSes or other web server instances, and not serving websites from proxy itself), set disableServerSideScriptExpose to false, set web root to outside SVR.JS installation directory, empty out rewriteMap, nonStandardCodes, enableDirectoryListingVHost, customHeadersVHost, wwwrootPostfixesVHost, wwwrootPostfixPrefixesVHost to []
, empty out customHeaders to {}
, set disableTrailingSlashRedirects to true, set allowDoubleSlashes to true, and set disableToHTTPSRedirect to true, in order to avoid interference involving SVR.JS web server (use this configuration when proxy itself doesn’t use SVR.JS server-side JavaScript not including SVR.JS mods).