v0.34.5
This commit is contained in:
1 parent
3776edf4fc
commit
7cfc3a6da1
35 files changed
+1377
-875
No files matched your search
+264
-197
@@ -1922,7 +1922,7 @@
|
||||
</div>
|
||||
<p class="fine" data-i18n="refreshHelp">Per-account refresh intervals. Off pauses
|
||||
all automatic sources; manual refresh remains available.</p>
|
||||
<div class="appearance-settings-grid">
|
||||
<div class="appearance-settings-grid refresh-settings-grid">
|
||||
<label class="check"><input type="checkbox" checked id="refresh-live-enabled"
|
||||
data-refresh-preference="live_enabled" />
|
||||
<span data-i18n="refreshLiveEnabled">Automatic refresh
|
||||
@@ -2920,19 +2920,6 @@
|
||||
id="runtime-system-memory">-</code></div>
|
||||
<div><span class="small-label" data-i18n="systemUptime">System uptime</span><code
|
||||
id="runtime-system-uptime">-</code></div>
|
||||
</div>
|
||||
<h3 data-i18n="systemProcessHeading">RustProxy process</h3>
|
||||
<div class="runtime-information-grid">
|
||||
<div><span class="small-label" data-i18n="systemAppVersion">RustProxy
|
||||
version</span><code id="runtime-version">-</code></div>
|
||||
<div><span class="small-label" data-i18n="systemProcessUptime">Process
|
||||
uptime</span><code id="runtime-process-uptime">-</code></div>
|
||||
<div><span class="small-label" data-i18n="systemProcessMemory">Process RAM
|
||||
(RSS)</span><code id="runtime-process-memory">-</code></div>
|
||||
<div><span class="small-label" data-i18n="systemProcessThreads">Process
|
||||
threads</span><code id="runtime-process-threads">-</code></div>
|
||||
<div><span class="small-label" data-i18n="systemOpenFds">Open file
|
||||
descriptors</span><code id="runtime-open-fds">-</code></div>
|
||||
<div><span class="small-label" data-i18n="statisticsSource">Statistics
|
||||
source</span><code id="runtime-statistics-source">-</code></div>
|
||||
</div>
|
||||
@@ -3550,11 +3537,13 @@
|
||||
<div class="vh-field"><span class="small-label" data-i18n="webServicePresetAction">Preset
|
||||
action</span><button class="outline" data-i18n="webServicePresetApply"
|
||||
id="web-service-preset-apply" type="button">Apply preset</button></div>
|
||||
<label class="check"><input id="web-service-hardening-attacks" type="checkbox" /><span
|
||||
data-i18n="webServiceHardeningAttacks">Block common attack probes</span></label>
|
||||
<label class="check"><input id="web-service-hardening-headers" type="checkbox" /><span
|
||||
data-i18n="webServiceHardeningHeaders">Strip unnecessary fingerprint
|
||||
headers</span></label>
|
||||
<div class="vh-wide web-service-preset-toggles">
|
||||
<label class="check"><input id="web-service-hardening-attacks" type="checkbox" /><span
|
||||
data-i18n="webServiceHardeningAttacks">Block common attack probes</span></label>
|
||||
<label class="check"><input id="web-service-hardening-headers" type="checkbox" /><span
|
||||
data-i18n="webServiceHardeningHeaders">Strip unnecessary fingerprint
|
||||
headers</span></label>
|
||||
</div>
|
||||
<p class="fine vh-wide" data-i18n="webServicePresetHelp" id="web-service-preset-summary">
|
||||
Presets fill normal Web Service settings and remain fully editable. Document root,
|
||||
service ID/name and PHP-FPM endpoint are not replaced.</p>
|
||||
@@ -3629,167 +3618,235 @@
|
||||
responses are never stored.</p>
|
||||
</div>
|
||||
<div class="vh-grid web-service-page" data-web-service-page="delivery" hidden>
|
||||
<label class="vh-wide"><span data-i18n="webServiceSendfile">Linux sendfile (zero-copy)</span>
|
||||
<select id="web-service-sendfile">
|
||||
<option value="off" data-i18n="notEnabled">Disabled</option>
|
||||
<option value="auto" data-i18n="webServiceSendfileAuto">Auto (eligible plain HTTP/1.1)
|
||||
</option>
|
||||
</select><small class="fine" data-i18n="webServiceSendfileHelp">Opt-in for static GET files at
|
||||
least 64 KiB on Linux HTTP/1.1 without TLS, cache, compression or transform. Other requests
|
||||
use safe streaming; switching this setting never clears the cache.</small></label>
|
||||
<label><span data-i18n="webServiceCompression">Dynamic compression</span><select
|
||||
id="web-service-compression">
|
||||
<option value="" data-i18n="inherit">Inherit</option>
|
||||
<option value="on" data-i18n="enabled">Enabled</option>
|
||||
<option value="off" data-i18n="notEnabled">Disabled</option>
|
||||
</select><small class="fine" data-i18n="webServiceCompressionHelp">Inherits the vhost/global
|
||||
policy by default. Codecs can be filtered per service; globally disabled codecs stay
|
||||
unavailable.</small></label>
|
||||
<div class="vh-wide vh-grid" id="web-service-compression-options">
|
||||
<label><span data-i18n="compressionZstd">Zstandard (zstd)</span><select
|
||||
id="web-service-compression-zstd">
|
||||
<option value="" data-i18n="inherit">Inherit</option>
|
||||
<option value="on" data-i18n="enabled">Enabled</option>
|
||||
<option value="off" data-i18n="notEnabled">Disabled</option>
|
||||
</select></label>
|
||||
<label><span data-i18n="compressionBr">Brotli (br)</span><select
|
||||
id="web-service-compression-br">
|
||||
<option value="" data-i18n="inherit">Inherit</option>
|
||||
<option value="on" data-i18n="enabled">Enabled</option>
|
||||
<option value="off" data-i18n="notEnabled">Disabled</option>
|
||||
</select></label>
|
||||
<label><span data-i18n="compressionGzip">gzip</span><select id="web-service-compression-gzip">
|
||||
<option value="" data-i18n="inherit">Inherit</option>
|
||||
<option value="on" data-i18n="enabled">Enabled</option>
|
||||
<option value="off" data-i18n="notEnabled">Disabled</option>
|
||||
</select></label>
|
||||
<label><span data-i18n="compressionDeflate">deflate</span><select
|
||||
id="web-service-compression-deflate">
|
||||
<option value="" data-i18n="inherit">Inherit</option>
|
||||
<option value="on" data-i18n="enabled">Enabled</option>
|
||||
<option value="off" data-i18n="notEnabled">Disabled</option>
|
||||
</select></label>
|
||||
</div>
|
||||
<label class="check"><input id="web-service-precompressed" type="checkbox" /><span
|
||||
data-i18n="webServicePrecompressed">Serve precompressed sidecars</span></label>
|
||||
<label class="check"><input id="web-service-precompressed-br" type="checkbox" /><span
|
||||
data-i18n="webServicePrecompressedBr">Brotli (.br)</span></label>
|
||||
<label class="check"><input id="web-service-precompressed-gzip" type="checkbox" /><span
|
||||
data-i18n="webServicePrecompressedGzip">Gzip (.gz)</span></label>
|
||||
<label class="vh-wide"><span data-i18n="webServiceDownloadExtensions">Download
|
||||
extensions</span><textarea id="web-service-download-extensions" maxlength="4096" rows="5"
|
||||
spellcheck="false" placeholder="zip pdf tar"></textarea><small class="fine"
|
||||
data-i18n="webServiceDownloadExtensionsHelp">Files with these extensions receive
|
||||
Content-Disposition: attachment.</small></label>
|
||||
<p class="fine vh-wide" data-i18n="webServiceRangeHelp">Static and precompressed representations
|
||||
keep validators, single-range requests, 206/416 and streaming delivery.</p>
|
||||
<section class="vh-wide vh-setting-section web-service-setting-section">
|
||||
<h3 data-i18n="webServiceStaticDeliverySection">Static file delivery</h3>
|
||||
<div class="vh-grid">
|
||||
<label class="vh-wide"><span data-i18n="webServiceSendfile">Linux sendfile
|
||||
(zero-copy)</span>
|
||||
<select id="web-service-sendfile">
|
||||
<option value="off" data-i18n="notEnabled">Disabled</option>
|
||||
<option value="auto" data-i18n="webServiceSendfileAuto">Auto (eligible plain
|
||||
HTTP/1.1)
|
||||
</option>
|
||||
</select><small class="fine" data-i18n="webServiceSendfileHelp">Opt-in for static GET
|
||||
files at
|
||||
least 64 KiB on Linux HTTP/1.1 without TLS, cache, compression or transform. Other
|
||||
requests
|
||||
use safe streaming; switching this setting never clears the cache.</small></label>
|
||||
<label class="vh-wide"><span data-i18n="webServiceDownloadExtensions">Download
|
||||
extensions</span><textarea id="web-service-download-extensions" maxlength="4096"
|
||||
rows="5" spellcheck="false" placeholder="zip pdf tar"></textarea><small
|
||||
class="fine" data-i18n="webServiceDownloadExtensionsHelp">Files with these
|
||||
extensions receive
|
||||
Content-Disposition: attachment.</small></label>
|
||||
<p class="fine vh-wide" data-i18n="webServiceRangeHelp">Static and precompressed
|
||||
representations
|
||||
keep validators, single-range requests, 206/416 and streaming delivery.</p>
|
||||
</div>
|
||||
</section>
|
||||
<section class="vh-wide vh-setting-section web-service-setting-section">
|
||||
<h3 data-i18n="webServiceDynamicCompressionSection">Dynamic compression</h3>
|
||||
<div class="vh-grid">
|
||||
<label><span data-i18n="webServiceCompression">Dynamic compression</span><select
|
||||
id="web-service-compression">
|
||||
<option value="" data-i18n="inherit">Inherit</option>
|
||||
<option value="on" data-i18n="enabled">Enabled</option>
|
||||
<option value="off" data-i18n="notEnabled">Disabled</option>
|
||||
</select><small class="fine" data-i18n="webServiceCompressionHelp">Inherits the
|
||||
vhost/global
|
||||
policy by default. Codecs can be filtered per service; globally disabled codecs stay
|
||||
unavailable.</small></label>
|
||||
<div class="vh-wide vh-grid" id="web-service-compression-options">
|
||||
<label><span data-i18n="compressionZstd">Zstandard (zstd)</span><select
|
||||
id="web-service-compression-zstd">
|
||||
<option value="" data-i18n="inherit">Inherit</option>
|
||||
<option value="on" data-i18n="enabled">Enabled</option>
|
||||
<option value="off" data-i18n="notEnabled">Disabled</option>
|
||||
</select></label>
|
||||
<label><span data-i18n="compressionBr">Brotli (br)</span><select
|
||||
id="web-service-compression-br">
|
||||
<option value="" data-i18n="inherit">Inherit</option>
|
||||
<option value="on" data-i18n="enabled">Enabled</option>
|
||||
<option value="off" data-i18n="notEnabled">Disabled</option>
|
||||
</select></label>
|
||||
<label><span data-i18n="compressionGzip">gzip</span><select
|
||||
id="web-service-compression-gzip">
|
||||
<option value="" data-i18n="inherit">Inherit</option>
|
||||
<option value="on" data-i18n="enabled">Enabled</option>
|
||||
<option value="off" data-i18n="notEnabled">Disabled</option>
|
||||
</select></label>
|
||||
<label><span data-i18n="compressionDeflate">deflate</span><select
|
||||
id="web-service-compression-deflate">
|
||||
<option value="" data-i18n="inherit">Inherit</option>
|
||||
<option value="on" data-i18n="enabled">Enabled</option>
|
||||
<option value="off" data-i18n="notEnabled">Disabled</option>
|
||||
</select></label>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="vh-wide vh-setting-section web-service-setting-section">
|
||||
<h3 data-i18n="webServiceSidecarsSection">Precompressed assets</h3>
|
||||
<div class="vh-grid">
|
||||
<label class="check"><input id="web-service-precompressed" type="checkbox" /><span
|
||||
data-i18n="webServicePrecompressed">Serve precompressed sidecars</span></label>
|
||||
<label class="check"><input id="web-service-precompressed-br" type="checkbox" /><span
|
||||
data-i18n="webServicePrecompressedBr">Brotli (.br)</span></label>
|
||||
<label class="check"><input id="web-service-precompressed-gzip" type="checkbox" /><span
|
||||
data-i18n="webServicePrecompressedGzip">Gzip (.gz)</span></label>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<div class="vh-grid web-service-page" data-web-service-page="php" hidden>
|
||||
<label class="vh-wide"><span data-i18n="phpProfileSelect">PHP-FPM configuration source</span>
|
||||
<select id="web-service-php-profile">
|
||||
<option value="" data-i18n="phpProfileLocal">Local configuration</option>
|
||||
</select>
|
||||
<small class="fine" data-i18n="phpProfileHelp">Select a shared profile or edit PHP-FPM locally.
|
||||
Profile changes apply to all attached Web Services.</small>
|
||||
</label>
|
||||
<div class="vh-wide"><button type="button" class="outline" id="web-service-php-profiles"
|
||||
data-i18n="phpProfileManage">Manage PHP-FPM profiles</button></div>
|
||||
<div class="vh-wide php-switch-row"><label class="check php-switch-label"><input
|
||||
id="web-service-php-enabled" type="checkbox" /><span
|
||||
data-i18n="webServicePhpEnabled">Enable PHP-FPM / FastCGI</span></label>
|
||||
<details class="metric-info php-field-info">
|
||||
<summary data-i18n-aria="phpHintEnabled" aria-label="About enabling PHP-FPM">i</summary>
|
||||
<div class="metric-info-popover">
|
||||
<p class="fine" data-i18n="phpHintEnabled">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.</p>
|
||||
<section class="vh-wide vh-setting-section web-service-setting-section">
|
||||
<h3 data-i18n="webServicePhpSourceSection">PHP-FPM source and endpoint</h3>
|
||||
<div class="vh-grid">
|
||||
<label class="vh-wide"><span data-i18n="phpProfileSelect">PHP-FPM configuration
|
||||
source</span>
|
||||
<select id="web-service-php-profile">
|
||||
<option value="" data-i18n="phpProfileLocal">Local configuration</option>
|
||||
</select>
|
||||
<small class="fine" data-i18n="phpProfileHelp">Select a shared profile or edit PHP-FPM
|
||||
locally.
|
||||
Profile changes apply to all attached Web Services.</small>
|
||||
</label>
|
||||
<div class="vh-wide"><button type="button" class="outline" id="web-service-php-profiles"
|
||||
data-i18n="phpProfileManage">Manage PHP-FPM profiles</button></div>
|
||||
<div class="vh-wide php-switch-row"><label class="check php-switch-label"><input
|
||||
id="web-service-php-enabled" type="checkbox" /><span
|
||||
data-i18n="webServicePhpEnabled">Enable PHP-FPM / FastCGI</span></label>
|
||||
<details class="metric-info php-field-info">
|
||||
<summary data-i18n-aria="phpHintEnabled" aria-label="About enabling PHP-FPM">i
|
||||
</summary>
|
||||
<div class="metric-info-popover">
|
||||
<p class="fine" data-i18n="phpHintEnabled">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.</p>
|
||||
</div>
|
||||
</details>
|
||||
</div>
|
||||
</details>
|
||||
</div>
|
||||
<label class="vh-wide"><span data-i18n="webServicePhpEndpoint">PHP-FPM endpoint</span><input
|
||||
id="web-service-php-endpoint" maxlength="512"
|
||||
placeholder="unix:/run/php/php-fpm.sock" /><small class="fine"
|
||||
data-i18n="webServicePhpEndpointHelp">Unix: unix:/run/php/php-fpm.sock. TCP:
|
||||
tcp:127.0.0.1:9000 or tcp:[::1]:9000. TCP is intentionally limited to loopback
|
||||
addresses.</small></label>
|
||||
<label><span data-i18n="webServicePhpExtensions">PHP extensions</span><input
|
||||
id="web-service-php-extensions" maxlength="512" placeholder="php, phtml" /><small
|
||||
class="fine" data-i18n="phpHintExtensions">Comma-separated extensions without dots (e.g.
|
||||
php, phtml). Only listed types are executed as PHP.</small></label>
|
||||
<div class="vh-wide php-switch-row"><label class="check php-switch-label"><input
|
||||
id="web-service-php-pass-authorization" type="checkbox" /><span
|
||||
data-i18n="webServicePhpPassAuthorization">Forward Authorization header</span></label>
|
||||
<details class="metric-info php-field-info">
|
||||
<summary data-i18n-aria="phpHintPassAuthorization"
|
||||
aria-label="Authorization forwarding information">i</summary>
|
||||
<div class="metric-info-popover">
|
||||
<p class="fine" data-i18n="phpHintPassAuthorization">Passes the incoming Authorization
|
||||
header to PHP as HTTP_AUTHORIZATION. Enable for API/Bearer/Basic authentication;
|
||||
disable if the application does not need it.</p>
|
||||
<label class="vh-wide"><span data-i18n="webServicePhpEndpoint">PHP-FPM endpoint</span><input
|
||||
id="web-service-php-endpoint" maxlength="512"
|
||||
placeholder="unix:/run/php/php-fpm.sock" /><small class="fine"
|
||||
data-i18n="webServicePhpEndpointHelp">Unix: unix:/run/php/php-fpm.sock. TCP:
|
||||
tcp:127.0.0.1:9000 or tcp:[::1]:9000. TCP is intentionally limited to loopback
|
||||
addresses.</small></label>
|
||||
<label><span data-i18n="webServicePhpExtensions">PHP extensions</span><input
|
||||
id="web-service-php-extensions" maxlength="512" placeholder="php, phtml" /><small
|
||||
class="fine" data-i18n="phpHintExtensions">Comma-separated extensions without dots
|
||||
(e.g.
|
||||
php, phtml). Only listed types are executed as PHP.</small></label>
|
||||
</div>
|
||||
</section>
|
||||
<section class="vh-wide vh-setting-section web-service-setting-section">
|
||||
<h3 data-i18n="webServicePhpRequestSection">Request handling</h3>
|
||||
<div class="vh-grid">
|
||||
<div class="vh-wide php-switch-row"><label class="check php-switch-label"><input
|
||||
id="web-service-php-pass-authorization" type="checkbox" /><span
|
||||
data-i18n="webServicePhpPassAuthorization">Forward Authorization
|
||||
header</span></label>
|
||||
<details class="metric-info php-field-info">
|
||||
<summary data-i18n-aria="phpHintPassAuthorization"
|
||||
aria-label="Authorization forwarding information">i</summary>
|
||||
<div class="metric-info-popover">
|
||||
<p class="fine" data-i18n="phpHintPassAuthorization">Passes the incoming
|
||||
Authorization
|
||||
header to PHP as HTTP_AUTHORIZATION. Enable for API/Bearer/Basic
|
||||
authentication;
|
||||
disable if the application does not need it.</p>
|
||||
</div>
|
||||
</details>
|
||||
</div>
|
||||
</details>
|
||||
</div>
|
||||
<div class="vh-wide php-switch-row"><label class="check php-switch-label"><input
|
||||
id="web-service-php-path-info" type="checkbox" /><span
|
||||
data-i18n="webServicePhpPathInfo">Enable PHP PATH_INFO splitting</span></label>
|
||||
<details class="metric-info php-field-info">
|
||||
<summary data-i18n-aria="phpHintPathInfo" aria-label="PHP PATH_INFO information">i</summary>
|
||||
<div class="metric-info-popover">
|
||||
<p class="fine" data-i18n="phpHintPathInfo">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.</p>
|
||||
<div class="vh-wide php-switch-row"><label class="check php-switch-label"><input
|
||||
id="web-service-php-path-info" type="checkbox" /><span
|
||||
data-i18n="webServicePhpPathInfo">Enable PHP PATH_INFO splitting</span></label>
|
||||
<details class="metric-info php-field-info">
|
||||
<summary data-i18n-aria="phpHintPathInfo" aria-label="PHP PATH_INFO information">i
|
||||
</summary>
|
||||
<div class="metric-info-popover">
|
||||
<p class="fine" data-i18n="phpHintPathInfo">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.</p>
|
||||
</div>
|
||||
</details>
|
||||
</div>
|
||||
</details>
|
||||
</div>
|
||||
<label><span data-i18n="webServicePhpConnectTimeout">Connect timeout (ms)</span><input
|
||||
id="web-service-php-connect-timeout" min="50" max="60000" step="1" type="number" /><small
|
||||
class="fine" data-i18n="phpHintConnectTimeout">How long to wait for the FPM socket
|
||||
connection; e.g. 1000 = 1 s (50–60000).</small></label>
|
||||
<label><span data-i18n="webServicePhpRequestTimeout">Total FastCGI request timeout (ms)</span><input
|
||||
id="web-service-php-request-timeout" min="100" max="3600000" step="1" type="number" /><small
|
||||
class="fine" data-i18n="phpHintRequestTimeout">Time for the complete FastCGI exchange; e.g.
|
||||
30000 = 30 s (100–3600000).</small></label>
|
||||
<label><span data-i18n="webServicePhpConcurrency">Max concurrent PHP requests</span><input
|
||||
id="web-service-php-concurrency" min="1" max="4096" step="1" type="number" /><small
|
||||
class="fine" data-i18n="phpHintConcurrency">Max simultaneous PHP requests for this service;
|
||||
e.g. 64. Exhaustion returns 503 (1–4096).</small></label>
|
||||
<label><span data-i18n="webServicePhpBodyLimit">PHP request body limit (bytes, 0 =
|
||||
unlimited)</span><input id="web-service-php-body-limit" min="0" max="8589934592" step="1"
|
||||
type="number" /><small class="fine" data-i18n="phpHintBodyLimit">Bytes, not MB: 67108864 =
|
||||
64 MiB; 0 = no proxy-side limit. PHP post_max_size is separate.</small></label>
|
||||
<label><span data-i18n="webServicePhpHeaderLimit">Max FastCGI response header bytes</span><input
|
||||
id="web-service-php-header-limit" min="4096" max="1048576" step="1" type="number" /><small
|
||||
class="fine" data-i18n="phpHintHeaderLimit">Max PHP response-header size in bytes; default
|
||||
65536 = 64 KiB (4096–1048576).</small></label>
|
||||
<label><span data-i18n="webServicePhpStderrLimit">Max PHP-FPM stderr log bytes</span><input
|
||||
id="web-service-php-stderr-limit" min="0" max="65536" step="1" type="number" /><small
|
||||
class="fine" data-i18n="phpHintStderrLimit">Max FastCGI STDERR bytes kept per request; e.g.
|
||||
4096. 0 disables capture.</small></label>
|
||||
<label class="vh-wide"><span data-i18n="webServicePhpCustomParams">Custom FastCGI
|
||||
parameters</span><textarea id="web-service-php-custom-params" maxlength="65536" rows="6"
|
||||
spellcheck="false" placeholder="APP_ENV = production APP_DEBUG = 0"></textarea><small
|
||||
class="fine" data-i18n="webServicePhpCustomParamsHelp">One NAME = value entry per line.
|
||||
Static trusted values only; core CGI, HTTP_* and PHP_* control names are
|
||||
reserved. Example: APP_ENV = production; no variable interpolation.</small></label>
|
||||
<label class="vh-wide"><span data-i18n="webServicePhpValues">PHP INI overrides
|
||||
(PHP_VALUE)</span><textarea id="web-service-php-values" maxlength="65536" rows="6"
|
||||
spellcheck="false"
|
||||
placeholder="memory_limit = 256M upload_max_filesize = 64M post_max_size = 64M"></textarea><small
|
||||
class="fine" data-i18n="webServicePhpValuesHelp">One php.ini directive = value per line.
|
||||
Examples: memory_limit = 256M, upload_max_filesize = 64M, post_max_size = 64M,
|
||||
max_execution_time = 30. Use PHP_ADMIN_VALUE for operator-only settings.</small></label>
|
||||
<label class="vh-wide"><span data-i18n="phpProfileAdminValues">PHP administrator INI overrides
|
||||
(PHP_ADMIN_VALUE)</span><textarea id="web-service-php-admin-values" maxlength="65536"
|
||||
rows="6" spellcheck="false"
|
||||
placeholder="open_basedir = /var/www/webmail/:/tmp/ display_errors = Off"></textarea><small
|
||||
class="fine" data-i18n="phpHintAdminValues">Admin-only directives, e.g. open_basedir =
|
||||
/var/www/webmail/:/tmp/. For isolation use a dedicated PHP-FPM pool/socket; dynamic INI
|
||||
overrides can persist across requests sharing a worker.</small></label>
|
||||
<div class="vh-wide form-actions"><button class="outline" data-i18n="webServicePhpDocsButton"
|
||||
id="web-service-php-help" type="button">FastCGI syntax and safety</button></div>
|
||||
<p class="fine vh-wide" data-i18n="webServicePhpHelp">RustProxy speaks FastCGI directly to a
|
||||
long-running PHP-FPM pool. PHP is not spawned per request and PHP source is never served when
|
||||
PHP handling is selected.</p>
|
||||
</div>
|
||||
</section>
|
||||
<section class="vh-wide vh-setting-section web-service-setting-section">
|
||||
<h3 data-i18n="webServicePhpLimitsSection">Timeouts and capacity</h3>
|
||||
<div class="vh-grid">
|
||||
<label><span data-i18n="webServicePhpConnectTimeout">Connect timeout (ms)</span><input
|
||||
id="web-service-php-connect-timeout" min="50" max="60000" step="1"
|
||||
type="number" /><small class="fine" data-i18n="phpHintConnectTimeout">How long to
|
||||
wait for the FPM socket
|
||||
connection; e.g. 1000 = 1 s (50–60000).</small></label>
|
||||
<label><span data-i18n="webServicePhpRequestTimeout">Total FastCGI request timeout
|
||||
(ms)</span><input id="web-service-php-request-timeout" min="100" max="3600000"
|
||||
step="1" type="number" /><small class="fine" data-i18n="phpHintRequestTimeout">Time
|
||||
for the complete FastCGI exchange; e.g.
|
||||
30000 = 30 s (100–3600000).</small></label>
|
||||
<label><span data-i18n="webServicePhpConcurrency">Max concurrent PHP requests</span><input
|
||||
id="web-service-php-concurrency" min="1" max="4096" step="1" type="number" /><small
|
||||
class="fine" data-i18n="phpHintConcurrency">Max simultaneous PHP requests for this
|
||||
service;
|
||||
e.g. 64. Exhaustion returns 503 (1–4096).</small></label>
|
||||
<label><span data-i18n="webServicePhpBodyLimit">PHP request body limit (bytes, 0 =
|
||||
unlimited)</span><input id="web-service-php-body-limit" min="0" max="8589934592"
|
||||
step="1" type="number" /><small class="fine" data-i18n="phpHintBodyLimit">Bytes, not
|
||||
MB: 67108864 =
|
||||
64 MiB; 0 = no proxy-side limit. PHP post_max_size is separate.</small></label>
|
||||
<label><span data-i18n="webServicePhpHeaderLimit">Max FastCGI response header
|
||||
bytes</span><input id="web-service-php-header-limit" min="4096" max="1048576"
|
||||
step="1" type="number" /><small class="fine" data-i18n="phpHintHeaderLimit">Max PHP
|
||||
response-header size in bytes; default
|
||||
65536 = 64 KiB (4096–1048576).</small></label>
|
||||
<label><span data-i18n="webServicePhpStderrLimit">Max PHP-FPM stderr log bytes</span><input
|
||||
id="web-service-php-stderr-limit" min="0" max="65536" step="1"
|
||||
type="number" /><small class="fine" data-i18n="phpHintStderrLimit">Max FastCGI
|
||||
STDERR bytes kept per request; e.g.
|
||||
4096. 0 disables capture.</small></label>
|
||||
</div>
|
||||
</section>
|
||||
<section class="vh-wide vh-setting-section web-service-setting-section">
|
||||
<h3 data-i18n="webServicePhpOverridesSection">FastCGI and php.ini overrides</h3>
|
||||
<div class="vh-grid">
|
||||
<label class="vh-wide"><span data-i18n="webServicePhpCustomParams">Custom FastCGI
|
||||
parameters</span><textarea id="web-service-php-custom-params" maxlength="65536"
|
||||
rows="6" spellcheck="false"
|
||||
placeholder="APP_ENV = production APP_DEBUG = 0"></textarea><small class="fine"
|
||||
data-i18n="webServicePhpCustomParamsHelp">One NAME = value entry per line.
|
||||
Static trusted values only; core CGI, HTTP_* and PHP_* control names are
|
||||
reserved. Example: APP_ENV = production; no variable interpolation.</small></label>
|
||||
<label class="vh-wide"><span data-i18n="webServicePhpValues">PHP INI overrides
|
||||
(PHP_VALUE)</span><textarea id="web-service-php-values" maxlength="65536" rows="6"
|
||||
spellcheck="false"
|
||||
placeholder="memory_limit = 256M upload_max_filesize = 64M post_max_size = 64M"></textarea><small
|
||||
class="fine" data-i18n="webServicePhpValuesHelp">One php.ini directive = value per
|
||||
line.
|
||||
Examples: memory_limit = 256M, upload_max_filesize = 64M, post_max_size = 64M,
|
||||
max_execution_time = 30. Use PHP_ADMIN_VALUE for operator-only
|
||||
settings.</small></label>
|
||||
<label class="vh-wide"><span data-i18n="phpProfileAdminValues">PHP administrator INI
|
||||
overrides
|
||||
(PHP_ADMIN_VALUE)</span><textarea id="web-service-php-admin-values"
|
||||
maxlength="65536" rows="6" spellcheck="false"
|
||||
placeholder="open_basedir = /var/www/webmail/:/tmp/ display_errors = Off"></textarea><small
|
||||
class="fine" data-i18n="phpHintAdminValues">Admin-only directives, e.g. open_basedir
|
||||
=
|
||||
/var/www/webmail/:/tmp/. For isolation use a dedicated PHP-FPM pool/socket; dynamic
|
||||
INI
|
||||
overrides can persist across requests sharing a worker.</small></label>
|
||||
<div class="vh-wide form-actions"><button class="outline"
|
||||
data-i18n="webServicePhpDocsButton" id="web-service-php-help" type="button">FastCGI
|
||||
syntax and safety</button></div>
|
||||
<p class="fine vh-wide" data-i18n="webServicePhpHelp">RustProxy speaks FastCGI directly to a
|
||||
long-running PHP-FPM pool. PHP is not spawned per request and PHP source is never served
|
||||
when
|
||||
PHP handling is selected.</p>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
<div class="vh-grid web-service-page" data-web-service-page="security" hidden>
|
||||
<label><span data-i18n="webServiceSymlinkPolicy">Symlink policy</span><select
|
||||
@@ -3978,23 +4035,28 @@ log_errors = On</code></pre>
|
||||
id="redirect-editing">NEW</span><button class="quiet" data-i18n="close" id="redirect-close"
|
||||
type="button">Close</button>
|
||||
</div>
|
||||
<div class="vh-grid">
|
||||
<label><span data-i18n="redirectId">Redirect ID</span><input id="redirect-id" maxlength="64"
|
||||
pattern="[A-Za-z0-9_-]{1,64}" required="" /></label>
|
||||
<label><span data-i18n="redirectName">Display name</span><input id="redirect-name"
|
||||
maxlength="96" /></label>
|
||||
<label class="check"><input id="redirect-enabled" type="checkbox" /><span
|
||||
data-i18n="enabled">Enabled</span></label>
|
||||
<div class="vh-wide" id="redirect-hosts-editor"></div>
|
||||
<label><span data-i18n="vhCertificate">Certificate</span><select
|
||||
id="redirect-certificate"></select></label>
|
||||
</div>
|
||||
<fieldset class="vh-group editor-identity-section">
|
||||
<legend data-i18n="hostIdentitySection">Host and domains</legend>
|
||||
<div class="vh-grid">
|
||||
<label><span data-i18n="redirectId">Redirect ID</span><input id="redirect-id" maxlength="64"
|
||||
pattern="[A-Za-z0-9_-]{1,64}" required="" /></label>
|
||||
<label><span data-i18n="redirectName">Display name</span><input id="redirect-name"
|
||||
maxlength="96" /></label>
|
||||
<label class="check"><input id="redirect-enabled" type="checkbox" /><span
|
||||
data-i18n="enabled">Enabled</span></label>
|
||||
<div class="vh-wide" id="redirect-hosts-editor"></div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<section class="vh-group">
|
||||
<div class="card-heading">
|
||||
<div><span class="small-label" data-i18n="redirectFrontend">FRONTEND</span>
|
||||
<h3 data-i18n="redirectListeners">Listeners</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="vh-grid editor-frontend-certificate">
|
||||
<label><span data-i18n="vhCertificate">Certificate</span><select
|
||||
id="redirect-certificate"></select></label>
|
||||
</div>
|
||||
<div class="redirect-listeners" id="redirect-listeners"></div>
|
||||
<div class="protocol-toggle-row"><label class="check"><input id="redirect-http2" type="checkbox" /><span
|
||||
data-i18n="vhHttp2Enabled">Enable HTTP/2 for this host</span></label><label
|
||||
@@ -4027,23 +4089,28 @@ log_errors = On</code></pre>
|
||||
id="notfound-editing">NEW</span><button class="quiet" data-i18n="close" id="notfound-close"
|
||||
type="button">Close</button>
|
||||
</div>
|
||||
<div class="vh-grid">
|
||||
<label><span data-i18n="notfoundId">Host ID</span><input id="notfound-id" maxlength="64"
|
||||
pattern="[A-Za-z0-9_-]{1,64}" required="" /></label>
|
||||
<label><span data-i18n="notfoundName">Display name</span><input id="notfound-name"
|
||||
maxlength="96" /></label>
|
||||
<label class="check"><input id="notfound-enabled" type="checkbox" /><span
|
||||
data-i18n="enabled">Enabled</span></label>
|
||||
<div class="vh-wide" id="notfound-hosts-editor"></div>
|
||||
<label><span data-i18n="vhCertificate">Certificate</span><select
|
||||
id="notfound-certificate"></select></label>
|
||||
</div>
|
||||
<fieldset class="vh-group editor-identity-section">
|
||||
<legend data-i18n="hostIdentitySection">Host and domains</legend>
|
||||
<div class="vh-grid">
|
||||
<label><span data-i18n="notfoundId">Host ID</span><input id="notfound-id" maxlength="64"
|
||||
pattern="[A-Za-z0-9_-]{1,64}" required="" /></label>
|
||||
<label><span data-i18n="notfoundName">Display name</span><input id="notfound-name"
|
||||
maxlength="96" /></label>
|
||||
<label class="check"><input id="notfound-enabled" type="checkbox" /><span
|
||||
data-i18n="enabled">Enabled</span></label>
|
||||
<div class="vh-wide" id="notfound-hosts-editor"></div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<section class="vh-group">
|
||||
<div class="card-heading">
|
||||
<div><span class="small-label" data-i18n="notfoundFrontend">FRONTEND</span>
|
||||
<h3 data-i18n="redirectListeners">Listeners</h3>
|
||||
</div>
|
||||
</div>
|
||||
<div class="vh-grid editor-frontend-certificate">
|
||||
<label><span data-i18n="vhCertificate">Certificate</span><select
|
||||
id="notfound-certificate"></select></label>
|
||||
</div>
|
||||
<div id="notfound-listeners"></div>
|
||||
<div class="protocol-toggle-row"><label class="check"><input id="notfound-http2" type="checkbox" /><span
|
||||
data-i18n="vhHttp2Enabled">Enable HTTP/2 for this host</span></label><label
|
||||
|
||||
Reference in new issue
Block a user