Skip to main content
Version: 8.2405.x.x RR

Low-level properties

These parameters are defined, or can be overwritten in the bc.properties configuration file. This file is usually located under /var/opt/nevisproxy/<instance name>/conf/bc.properties. Under normal operating circumstances, there should be no need to alter the default values.

BC properties

ch.nevis.bc.net.AllowPostWithoutContentLength

Type: Boolean
Default: false

The HTTP 1.1 standard requires POST and PUT methods to have a valid Content-Length. If this attribute is configured, POST and PUT requests without a Content-Length will not cause an exception.

ch.nevis.bc.net.MaxHeaders

Type: Integer
Default: 100

Limits the maximum number of response headers. Any connector servlet or filter is affected that receives a response, for example, the HttpConnectorServlet, BackendConnectorServlet, ICAPFilter and so on.

org.jdom.EntityExpansionLimit

Type: Integer
Default: 1000

Limit the number of entity expansions of an xml-document.

bc.net.ssl.SSLCryptoDevice

Type: String

This property enables the use of a cryptographic hardware accelerator board to offload some of the SSL processing overhead. See Gemalto GemEngine support for the HttpsConnectorServlet for an example use case with the Gemalto engine.

ch.nevis.session.sectoken.data.charset

Type: String
default: ISO-8859-1

This property sets the charset you expect for the SecToken received by nevisAuth. Set the property's value to "UTF-8" if nevisAuth sends UTF-8-encoded SecTokens.

bc.security.PassPhrasePolicy

Type: String
default: pipe,env,prompt

Controls the password access. The following options are available:

  • pipe: Executes the command set in the property bc.security.PassPhraseDialog
  • env: The package uses a prefetching mechanism and passes the passphrases via "env"
  • prompt: The passphrases are read from the controlling terminal (if possible). See also chapter Password handling for private keys.

bc.security.PassPhraseDialog

Type: String
Default: pipe://@PKG_HOME@/bin/keystorepwget

This property is relevant if the property bc.security.PassPhrasePolicy is set to pipe. In this case, the property bc.security.PassPhraseDialog must have the following format: pipe://<executable> [<args>] The <executable> is called with the given <args> followed by the name of the file for which the password should be returned. The <executable> has to write the password into stdout.

bc.security.pinenv

Type: String

This property is relevant if the property bc.security.PassPhrasePolicy is set to env. In this case, the property bc.security.pinenv must have one of the following values:

  • keep: Keeps the password as is in the defined environment variable.
  • obfuscate: Keeps an obfuscated value on the environment variable.

If not set, the environment variable will be removed once the password has been read. This may lead to errors if a password needs to be read more than once.

bc.net.ssl.EnableLegacyHostnameCheck

Type: Boolean
Default: false

Enables to switch back to the previous peer hostname check mechanism, which does not require setting the CA of the peer's node certificate.

ch.nevis.session.sectoken.SecTokenVerifier.checkCertificateValidity

Type: Boolean
Default: true

Disables the verification of the validity (expiration date) of the CA certificate which signed the given sectoken. For security reasons, never set this property to 'false' in a productive setup.

ch.nevis.session.sectoken.Signer.checkCertificateValidity

Type: Boolean
Default: true

Disables the verification of the validity (expiration date) of the the sectoken signer. For security reasons, never set this property to 'false' in a productive setup.

user.locale

Type: String
Default: en_US.utf8

Extended character set handling. Use 'locale -a' to see installed language support. It is recommended to use UTF8, but LATIN1 may be required, due to 1-byte extended ascii support.

Carrier server properties

NameType, usage constraints, defaultsDescription
org.apache.response.UseBufferdWriteBoolean, default: falseIf set to 'true', the response is buffered by Apache up to ~8kb. If set to 'false', Apache will not buffer the response.
org.apache.request.ParsedUriBoolean, default: trueIf set to true (which is the default), this parameter decodes the encoded URI of an incoming request for internal nevisProxy processing. E.g., if true, the parameter turns URI "/UIFont%20CMSStyle.swift" into "/UIFont CMSStyle.swift" (%20 stands for ' '). If set to false, the parameter does not modify anything and forwards the undecoded URI. E.g., if false, the parameter forwards the URI "/UIFont%20CMSStyle.swift" unchanged. This parameter is directly related to the parameter URLEncoding of the servlet HttpConnectorServlet ). The URLEncoding parameter encodes the outgoing URI from nevisProxy to the back-end application. We highly recommend setting both parameters to true. If your setup requires one of the parameters to be false, set the other one to false too, on all HttpConnectorServlets. The parameter URLEncoding can also be set to false centrally by adding the code line ch.nevis.isiweb4. servlet.connector.http.URLEncoding= false to the bc.properties configuration file.
org.apache.runtime.UseApachePoolMemoryBoolean, default: falseIf set to "true", this bc-property will improve the performance of nevisProxy when allocating memory. A performance increase of up to 10% is possible, depending on the filter chain: The bigger the chain, the higher the performance improvement.
org.apache.modules.ssl.disable.SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUGBoolean, default: not configuredIf configured, the respective openssl option SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG will be disabled.
org.apache.hooks.TranslateName.disableBoolean, default: not configuredIf set to 'false', the apache default for the hook ap_hook_translate_name(..) will be invoked. If not configured, or set to any other value, the Apache default for the hook will not be invoked for performance reasons.
org.apache.hooks.MapToStorage.disableBoolean, default: not configuredThe same behavior like above for the MapToStorage hook.
org.apache.request.UseProxyReqBoolean, default: falseIf set to 'false', Apache adds an own HTTP "Server" header with value "Apache" for each response, no matter if the header has already been set by the backend (see also attribute SetServerHeader of the HttpConnectorServlet).

ch.nevis.navajo.boot.ShowErrorsOnBoot

Type: Boolean
Default: false

Set this property if navajo doesn't start without a visible reason printed or logged.

ch.nevis.navajo.boot.PreventStartOnInvalidConfig

Type: Boolean
Default: false

This property defines the behavior of nevisProxy in case of an invalid configuration, such as an invalid web.xml file or a missing .cert file. If you set the property to "true", nevisProxy will not start the instance at all. If you set the property to "false", nevisProxy will start the instance, but returns the HTTP status code "500".

ch.nevis.navajo.boot.PreloadLibraries

Type: String
Default: not configured

Configures a list of shared object files that will be loaded first.

ch.nevis.navajo.tracing.DisableMemoryUsage

Type: Boolean
Default: false

Controls the tracing of memory usage statistics messages.

ch.nevis.navajo.tracing.ReconfigurationPeriod

Type: Integer
Default: not configured

This property allows detecting changes in the trace configuration. It defines the period during which the changes are detected.

ch.nevis.navajo.AlwaysNoticeOnClientClose

Type: Boolean
Default: false

When a backend takes some time to respond, the frontend may close the connection. Due to a bug in apache this close is not recognised by the proxy. By setting this property to true, the proxy checks regularly if the connection is still open when sending back the response. If the connection was closed, a NOTICE with a GW02 event is traced. There may still be some situations when the connection was closed right after the response was sent back, which may lead to a false positive. Furthermore, setting this property to true may have a minimal performance impact.

ch.nevis.navajo.TraceClIdAlwaysIfSessionIsThere

Type: Boolean
Default: false

Normally if nobody was interested in a session no ClId is logged. This property turns on ClId logging even if no filter/servlet needed a session at all. This also implies a session cache access.

ch.nevis.ErrorOnDeprecated

Type: Boolean
Default: false

This property defines the behavior of nevisProxy in case a filter or servlet configuration contains a deprecated parameter.

  • If you set the property to "true", nevisProxy will not load the related filter or servlet and block all requests using this filter. Additionally, nevisProxy will log the error message CONF-0001.
  • If you set the property to "false", nevisProxy will only log a notice message. The related filter or servlet will be loaded and work as usual.

ch.nevis.navajo.AllowUnknownParameters

Type: Boolean
Default: false

If you set this property to "true", the system will silently accept unknown filter or servlet parameters. If the property is set to "false" or not set at all, the system will trace error NVUT-0010 in case of an unknown parameter.

ch.nevis.navajo.AllowMultipleMapping

Type: Boolean
Default: false

Checks for multiple mappings of the same filter. If you set this property to "false", the system traces an ERROR if a filter is added multiple times to the filter chain of a request. If set to "true", the system only traces an INFO message.

NameType, Usage Constraints, DefaultsDescription
ch.nevis.navajo.response.BufferBlocksInteger, default: 512Determines the number of blocks used for response buffering (one block is buffering 8192 bytes).
ch.nevis.navajo.request.BufferSizeInteger, default: 65536Defines the number of bytes for request body buffering (needed for TLS renegotiation and body parsing).
ch.nevis.navajo.request.MemBufferSizeInteger, default: 102400Maximum size of a request body that will be buffered into memory (needed if someone is calling mark(..) on the InputStream). If the request body exceeds that value, a file will be used for buffering.
ch.nevis.navajo.error-page.CheckAcceptHeaderBoolean, default: trueIf this property is set to "true", nevisProxy checks the HTTP header Accept against the mime type for the configured error page.
ch.nevis.navajo.loading.servlet.LibPathString, default: not configuredNormally, all servlets and filters will be loaded from the directory WEB-INF/lib. With that property an alternative directory can be configured.
ch.nevis.navajo.admin.ListenerPeriodInteger, default: 10Periodicity of the admin listener, i.e. how fast a 'stop' event is propagated.
ch.nevis.navajo.request.ThrowExceptionOnInvalidHeaderBoolean, default: falseIf this property is set to "true", nevisProxy returns a Bad Request (status code 400) to the client if a header is not RFC 2616 conform. If this property is set to "false", or not set at all, nevisProxy just cuts off the invalid header. In both cases, nevisProxy logs an ERROR message with one of the following error codes:* [NVRQ-0001], [NVRQ-0002], [NVRQ-0003]
ch.nevis.session.sectoken.algorithm.blacklistString default: MD2withRSA, MD5withRSADefines a blacklist of algorithms which are not accepted for sectoken signing. Existing algorithms: SHA1withRSA, SHA256withRSA, SHA384withRSA, SHA512withRSA, MD2withRSA, MD5withRSA, SHA1withDSA
bc.lang.system.MaxAllocSizeInteger default: 16777215With this property, the maximal allocable size can be increased. The default is 16777215 bytes. An attacker may try to allocate several times the defined size, which would cause a memory overflow on your server. This is a low-level technical parameter, consult support before changing it.
ch.nevis.isiweb4.filter.lua.CheckMemoryBoolean, default: falseWith this property the memory in the LuaFilter will be analyzed and an exception will be thrown in case of memory errors. NEVER use in production.
ch.nevis.bc.sql.mysql.MaxLoopsToGetAConnectionInteger optional, advanced default: unlimitedWith this property you can limit the number of retries to get an available MysqlConnection.
ch.nevis.navajo.SessionCleanupWaitTimeoutInteger optional, advancedThe maximal time (in msec) to wait for a reaper-call to wait, before shutting down an instance
ch.nevis.isiweb4.listener.SessionListener.MaxPendingWorkerJobsInteger, optional, default: 10000Defines the maximal number of jobs that will be queued when reaping. Once this limit is reached, the listeners will not be called for the related sessions.
ch.nevis.isiweb4.listener.SessionListener.NumWorkerThreadsInteger, optional, default: 10Defines the number of threads which will be used to call the listeners when a session is invalidated. If set to '0' the reaping is done sequentially which may have a performance impact if many sessions expire at the same time.
ch.nevis.bc.sql.mysql.ConnectTimeoutInteger, optional, default: 10This property defines the default connection timeout in seconds for a MySQL connection. If you do not set this property, the connection may "hang" for several minutes before a timeout occurs. This is because the default built-in timeout of the MariaDB database can be up to 20 minutes, depending on the configuration of your MariaDB installation.
ch.nevis.nevisproxy.UseSecureDefaultsBoolean, optional, default: falseThis property allows you to activate the recommended secure filter and servlet values as defaults. This is a global configuration option for the entire nevisProxy installation. See the chapter Secure defaults for more information.
ch.nevis.bc.net.multipart.formdata.rfccompliantBoolean, default: trueAllows multipart requests to have preamble and epilogue parts, as described in RFC1341.
ch.nevis.bc.sql.mysql.RetriesOnLockWaitTimeOutInteger, default: 0nevisProxy can try to re-execute the failed command, if the configured MariaDB session store returns one of the following errors:"Lock wait timeout exceeded; try restarting transaction" (error code 1205); "Deadlock found when trying to get lock; try restarting transaction" (error code 1213). This property configures the number of retries allowed in such a case.
ch.nevis.navajo.response.Location.rfc2616compliantBoolean, default: falseIf set to 'true', all absolute redirects are prefixed either with the name set in the incoming 'Host' header, or with the configured server name in navajo.xml. The value that is taken depends on the configured 'UseCanonicalName' in navajo.xml.UseCanonicalName==On (default) --> the configured server name is taken; UseCanonicalName==Off --> the host header is takenFor example/redirect --> http://mys.host/redirect Setting the property 'ch.nevis.navajo.response.Location.rfc2616compliant=true' and the server parameter 'UseCanonicalName=Off' is considered unsecure.Hint: Make sure that you configure a HeaderValidationFilter where you add a whitelist of allowed Host-header values.
ch.nevis.navajo.hsm.engine.hookBoolean, default: falseDisables the Proxy's internal OpenSSL's at-exit cleanup when it is set to 'true'. Use this parameter when GemEngine's own OpenSSL's at-exit cleanup is causing cores.