CONTROL ROOM / Overview
CACHE

Cache purge / ban

The selected vhost limits the operation. Exact and prefix values include the query string. Regex and root-prefix / operations require an additional confirmation.

CACHE

Active BAN rules

ID Selector Value Host Vhost Expires Actions

No active BAN rules.

Persistent cold cache

Clean cold cache

Runs asynchronously and uses the same eviction mechanism as automatic cold-cache GC.

WEBSOCKET / CONNECT

Active WebSocket / tunnels

ID Client Host Upstream Protocol Duration RX TX Actions

No active tunnels.

SQLITE / LAST 512 REVISIONS

Revision history

Select a marked day to inspect the saved configuration revisions and their changes.

SQLITE / LAST 100 / RETAINED 10,000

Administration audit

Recent administration changes are loaded only when this window is opened.

Time Actor Action Detail

No audit entries.

Live access logs

ACTIVITY

Access log

Columns
Time Request Host Source IP Vhost Backend Status Duration Cache Outcome Transport WebSocket Upstream error

No traffic yet. Open the proxy to make your first request.

Live view starts with the latest 256 completed exchanges. Increase buffer to keep accumulating live entries up to 4096 until the log window is closed.

Web Service configuration

NEW
Configuration preset
Preset action

Presets fill normal Web Service settings and remain fully editable. Document root, service ID/name and PHP-FPM endpoint are not replaced.

.htaccess compatibility

This is a migration-oriented compatibility layer, not a complete Apache runtime. Supported directives are compiled into RustProxy Web Server rules.

Supported subset

RewriteEngine, RewriteBase, RewriteCond, RewriteRule, DirectoryIndex, Options +/-Indexes, AddType, AddHandler (PHP extensions), Header set/add/unset, ExpiresActive, ExpiresDefault, ExpiresByType, Require all granted/denied.

Rewrite compatibility

Rewrite conditions support REQUEST_FILENAME file tests (-f, -d, -s), REQUEST_URI, REQUEST_METHOD, QUERY_STRING, HTTP_HOST, HTTPS, DOCUMENT_ROOT, THE_REQUEST and HTTP headers. Flags: L, END, R, R=301/302/307/308, QSA, NC, F, OR. PT/NE are accepted as no-ops. E= is accepted as a compatibility no-op because request HTTP headers already reach PHP-FPM.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

PHP-FPM

.htaccess may add PHP extensions with AddHandler, but the PHP-FPM endpoint, timeouts and concurrency remain controlled by the Web Service PHP-FPM tab. Apache SetHandler proxy socket syntax is intentionally not accepted.

Loading and limits

Files are read and compiled on Validate, save and apply. RustProxy does not parse .htaccess per request. Re-apply after changing a file. The scan is bounded to 128 files, depth 16, 128 KiB per file and 1 MiB total.

Not Apache-complete

ErrorDocument, SetEnvIf, Redirect/RedirectMatch and FallbackResource are not implemented in this compatibility layer. General Files/FilesMatch, unsupported authentication/authorization directives, non-PHP handlers and SetHandler are rejected even when Strict mode is off because silently ignoring them could weaken access control or expose source. .htaccess/.htpasswd files are always blocked from HTTP delivery. Other unsupported non-security directives are logged and ignored unless Strict mode is enabled.

Vhost/location ACL, authentication, error pages and response rules still remain authoritative. .htaccess cannot escape the document root, select an arbitrary FastCGI socket or override protected framing headers.

PHP-FPM / FastCGI configuration

RustProxy connects directly to an existing PHP-FPM pool. Prefer a Unix socket on the same host. TCP is accepted only on loopback and is not a public/network FastCGI transport.

Endpoint syntax

unix:/run/php/php-fpm.sock
tcp:127.0.0.1:9000
tcp:[::1]:9000

For TCP, include the tcp: prefix, a literal loopback IP and port. Hostnames and non-loopback addresses are rejected. For Unix sockets, RustProxy must have permission to connect to the socket.

Custom FastCGI parameters

APP_ENV = production
APP_DEBUG = 0
TENANT = main

Use one NAME = value entry per line. Names are normalized to uppercase and may contain A-Z, 0-9 and underscore. These are static trusted operator values. RustProxy rejects core CGI names, HTTP_* names, PHP_VALUE and PHP_ADMIN_VALUE so they cannot override request routing, script selection or HTTP-derived parameters.

PHP INI overrides

memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 30

These lines are combined into the FastCGI PHP_VALUE parameter. PHP-FPM/PHP still decides which directives are changeable at this scope. Newlines/control characters are rejected and PHP_ADMIN_VALUE is intentionally unavailable.

Limits and headers

Request timeout covers the FastCGI exchange. The body limit is enforced while streaming and returns 413 when exceeded; 0 disables the RustProxy-side body limit. Response-header and stderr limits bound memory/diagnostic data. Authorization forwarding can be disabled for applications that do not need HTTP_AUTHORIZATION.

Do not put secrets in custom parameters or PHP_VALUE unless you accept storing them in normal Web Service configuration. Use a dedicated non-root PHP-FPM pool identity and keep PHP-FPM off public networks.

Vhost configuration

NEW

Private IP binding is not authentication. Keep firewall/ACL rules. HSTS preload is opt-in; affinity cookies are not login sessions.

Redirect configuration

NEW
FRONTEND

Listeners

BEHAVIOR

Rules

Longest matching path wins. 307/308 preserve the request method; 301/302/303 may change it in clients.

Redirect hosts do not contact a backend. Global host ACLs still apply. Avoid self-referential rules that can create browser redirect loops.

404 host configuration

NEW
FRONTEND

Listeners

RESPONSE

Local response

The host never opens an upstream connection. The built-in placeholder is no-store and intentionally omits optional RustProxy diagnostic/server headers.

Stream configuration

NEW

Changing a stream listener requires a RustProxy restart.

Visual field builder

CONFIGURABLE JSON

Select source fields and optionally rename their JSON keys. Changes are written to the advanced JSON mapping when applied.

Fields

Enabled Source field Output JSON key

Preview