## Per-site OLS vhost detail — rendered by the WHP panel (shared_ols_manager) ## to $SITES_ROOT//vhconf.conf and referenced from the vhost stanza's ## `configFile` in httpd_config.conf. ~~PLACEHOLDERS~~ are filled by the panel ## (matches the shared-vhost-template.tpl convention). One directive per line — ## OLS PlainConf does NOT accept ';' separators. ## ## CRITICAL (feedback_ols_lsapi_no_script_filename_remap): docRoot here MUST be ## the SAME absolute path the cac-lsphp sidecar has mounted, because OLS hands ## lsphp exactly docRoot+URI as SCRIPT_FILENAME and lsphp opens it. Both are ## /mnt/users///public_html. The panel asserts this parity. docRoot ~~DOCROOT~~ enableScript 1 ## Remote detached lsphp over LSAPI/TCP. address = the site's sidecar container ## on the docker network. autoStart 0 = OLS NEVER spawns it (it's a separate ## container). maxConns MUST equal the sidecar's PHP_LSAPI_CHILDREN — the panel ## writes both from the single fpm_max_children value so they can't drift. ## NO `env` lines: detached lsphp owns its env in the sidecar (spec 5.2). ## NOTE on `path`: required syntactically but UNUSED for a remote autoStart-0 ## processor (OLS never spawns it). Point it at a path that always exists in the ## shared-ols image (the stock fcgi-bin/lsphp), NOT a version-specific ## /usr/local/lsws/lsphpNN — the shared-ols image carries only one lsphp build, ## while sites may run any PHP version on their sidecar. The sidecar owns the ## real PHP runtime/version. extprocessor ~~VHNAME~~_lsphp { type lsapi address ~~SIDECAR~~:9000 maxConns ~~MAXCONNS~~ autoStart 0 path /usr/local/lsws/fcgi-bin/lsphp initTimeout 60 retryTimeout 0 respBuffer 0 persistConn 1 } scripthandler { add lsapi:~~VHNAME~~_lsphp php } ## context / drives static serving + .htaccess. RewriteFile .htaccess is OLS's ## autoLoadHtaccess equivalent — re-read on graceful restart (the watcher ## triggers that within the documented window). context / { allowBrowse 1 location $DOC_ROOT/ rewrite { enable 1 RewriteFile .htaccess } addDefaultCharset off } ## LSCache is enabled at MODULE scope (httpd_config_base.tpl) and honored per ## response via the LiteSpeed Cache WP plugin's X-LiteSpeed-Cache-Control ## headers — a `configFile`-loaded vhost in OLS 1.8.4 does NOT accept a bare ## `cache {}` block (verified 2026-06-10), so there is intentionally no per-vhost ## cache block here. OLS stores each vhost's cache in its own subdir under the ## module storagePath automatically (per-vhost isolation, spec 5.2). ## Per-vhost logs in the shared-ols container's OWN writable log dir (NOT ## /home/, which doesn't exist here, and NOT the read-only /mnt/users mount). errorlog /usr/local/lsws/logs/~~VHNAME~~.error_log { logLevel WARN rollingSize 50M keepDays 7 } accesslog /usr/local/lsws/logs/~~VHNAME~~.access_log { rollingSize 50M keepDays 7 }