Loading RustProxy…

Connecting to the administration panel.

The panel is taking longer than expected. Check your connection and try again.

Reload panel
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.

Shared PHP-FPM profiles

Expand a profile to edit it. Changes are saved immediately and shared by every attached Web Service.


.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

The same fields and syntax apply to a local Web Service PHP configuration and a reusable PHP-FPM profile. A selected profile overrides local PHP fields for all attached services. RustProxy connects to an already running PHP-FPM pool.

Enabling PHP and PATH_INFO

Enables execution of configured PHP extensions via the PHP-FPM socket. The pool must already be running; RustProxy does not start PHP. Other files remain static.

Allows /static.php/skins/file.css to run the existing static.php script with PATH_INFO=/skins/file.css. Needed by Roundcube static.php routes; usually not required for WordPress. Off by default.

Passes the incoming Authorization header to PHP as HTTP_AUTHORIZATION. Enable for API/Bearer/Basic authentication; disable if the application does not need it.

Endpoint syntax

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

Use unix: for the full local socket path or tcp: plus a literal loopback IP and port. Hostnames and non-loopback TCP are rejected. The RustProxy user must be allowed to connect to the socket. Separate pools when PHP INI security settings differ.

Execution and size limits

PHP extensions: comma-separated names such as php, phtml (no leading dots). Connect timeout: 1000 ms = 1 second. Full FastCGI request timeout: 30000 ms = 30 seconds. Concurrent requests: 64 (returns 503 when exhausted). Request body: 67108864 bytes = 64 MiB; 0 means unlimited by RustProxy. Response headers: 65536 bytes. STDERR: 4096 bytes; 0 disables capture. All numeric fields require integers; PHP INI limits are separate.

Custom FastCGI parameters

APP_ENV = production
APP_DEBUG = 0
TENANT = main

Put these in Custom FastCGI parameters only. One NAME = value per line; names start with A-Z and then contain A-Z, 0-9 or underscore (max 64 characters). Values are static, up to 8192 bytes each; no placeholders are expanded. Do not use SCRIPT_FILENAME, HTTP_* or PHP_VALUE/PHP_ADMIN_VALUE here.

PHP_VALUE — regular php.ini overrides

memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 30
error_reporting = E_ALL
log_errors = On
display_errors = Off
date.timezone = Europe/Warsaw

Enter these in PHP INI overrides (PHP_VALUE), not in FastCGI parameters. Use one directive = value per line (php.ini notation, no [section] headers or PHP tags). Exact support depends on which directives PHP-FPM permits to change. Common sizes use M/G, booleans On/Off and times seconds. Do not duplicate a directive in PHP_ADMIN_VALUE.

PHP_ADMIN_VALUE — administrator-only overrides

open_basedir = /var/www/webmail/:/tmp/:/usr/lib/php/
display_errors = Off
log_errors = On

Put these in PHP administrator INI overrides (PHP_ADMIN_VALUE). open_basedir lists allowed directories separated by ':' on Unix. Set it to paths of THAT application; do not reuse Roundcube restrictions in a WordPress pool. For security-sensitive values, prefer php_admin_value[...] in the configuration of a dedicated PHP-FPM pool. Shared FPM workers can retain request-supplied INI settings.

Storage, validation and troubleshooting

Each INI name may contain letters, digits, '.', '_' and '-' (up to 64 bytes); a value must be nonempty (up to 8192 bytes). Max 64 custom FastCGI entries and 64 INI overrides per map, with a total 128 KiB budget. No control characters or multi-line values. Values are saved in normal configuration: never place secrets there unless that storage is acceptable. A syntax-valid directive can still be rejected/ignored by PHP itself.

Critical: per-service PHP_VALUE/PHP_ADMIN_VALUE do NOT isolate applications when they share one PHP-FPM worker pool. Use different Unix sockets and restart the pools after moving WordPress and Roundcube apart. PATH_INFO does not fix open_basedir isolation.

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.

About RustProxy

RustProxy__RUSTPROXY_VERSION__
Author
Mateusz Gruszczynski @linuxiarz.pl
License
Open Source

RustProxy is an open-source project. Its source code is publicly available for inspection, development and community contribution.

Official source repositorygit.linuxiarz.pl/gru/RustProxy Official package repositoryrustproxy.linuxiarz.pl

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