app.set(name, value)
Assigns setting name
to value
, where name
is one of the properties from the app settings table.
Calling app.set('foo', true)
for a Boolean property is the same as calling app.enable('foo')
. Similarly, calling app.set('foo', false)
for a Boolean property is the same as calling app.disable('foo')
.
Retrieve the value of a setting with app.get()
.
app.set('title', 'My Site'); app.get('title'); // "My Site"
Application Settings
The following table lists application settings.
Note that sub-apps will:
- Not inherit the value of settings that have a default value. You must set the value in the sub-app.
- Inherit the value of settings with no default value; these are explicitly noted in the table below.
Exceptions: Sub-apps will inherit the value of trust proxy
even though it has a default value (for backward-compatibility); Sub-apps will not inherit the value of view cache
in production (when NODE_ENV
is “production”).
Property | Type | Description | Default |
---|---|---|---|
| Boolean |
Enable case sensitivity. When enabled, "/Foo" and "/foo" are different routes. When disabled, "/Foo" and "/foo" are treated the same. NOTE: Sub-apps will inherit the value of this setting. | N/A (undefined) |
| String | Environment mode. Be sure to set to "production" in a production environment; see Production best practices: performance and reliability. |
|
| Varied | Set the ETag response header. For possible values, see the |
|
| String | Specifies the default JSONP callback name. | “callback” |
| Varied | The 'replacer' argument used by `JSON.stringify`. NOTE: Sub-apps will inherit the value of this setting. | N/A (undefined) |
| Varied | The 'space' argument used by `JSON.stringify`. This is typically set to the number of spaces to use to indent prettified JSON. NOTE: Sub-apps will inherit the value of this setting. | N/A (undefined) |
| Varied | Disable query parsing by setting the value to The simple query parser is based on Node’s native query parser, querystring. The extended query parser is based on qs. A custom query string parsing function will receive the complete query string, and must return an object of query keys and their values. | "extended" |
| Boolean |
Enable strict routing. When enabled, the router treats "/foo" and "/foo/" as different. Otherwise, the router treats "/foo" and "/foo/" as the same. NOTE: Sub-apps will inherit the value of this setting. | N/A (undefined) |
| Number | The number of dot-separated parts of the host to remove to access subdomain. | 2 |
| Varied | Indicates the app is behind a front-facing proxy, and to use the When enabled, Express attempts to determine the IP address of the client connected through the front-facing proxy, or series of proxies. The `req.ips` property, then contains an array of IP addresses the client is connected through. To enable it, use the values described in the trust proxy options table. The `trust proxy` setting is implemented using the proxy-addr package. For more information, see its documentation. NOTE: Sub-apps will inherit the value of this setting, even though it has a default value. |
|
| String or Array | A directory or an array of directories for the application's views. If an array, the views are looked up in the order they occur in the array. |
|
| Boolean |
Enables view template compilation caching. NOTE: Sub-apps will not inherit the value of this setting in production (when `NODE_ENV` is "production"). |
|
| String | The default engine extension to use when omitted. NOTE: Sub-apps will inherit the value of this setting. | N/A (undefined) |
| Boolean | Enables the "X-Powered-By: Express" HTTP header. |
|
Options for `trust proxy` setting
Read Express behind proxies for more information.
Type | Value |
---|---|
Boolean | If If |
String String containing comma-separated values Array of strings | An IP address, subnet, or an array of IP addresses, and subnets to trust. Pre-configured subnet names are:
Set IP addresses in any of the following ways: Specify a single subnet: app.set('trust proxy', 'loopback') Specify a subnet and an address: app.set('trust proxy', 'loopback, 123.123.123.123') Specify multiple subnets as CSV: app.set('trust proxy', 'loopback, linklocal, uniquelocal') Specify multiple subnets as an array: app.set('trust proxy', ['loopback', 'linklocal', 'uniquelocal']) When specified, the IP addresses or the subnets are excluded from the address determination process, and the untrusted IP address nearest to the application server is determined as the client’s IP address. |
Number | Trust the nth hop from the front-facing proxy server as the client. |
Function | Custom trust implementation. Use this only if you know what you are doing. app.set('trust proxy', function (ip) { if (ip === '127.0.0.1' || ip === '123.123.123.123') return true; // trusted IPs else return false; }); |
Options for `etag` setting
NOTE: These settings apply only to dynamic files, not static files. The express.static middleware ignores these settings.
The ETag functionality is implemented using the etag package. For more information, see its documentation.
Type | Value |
---|---|
Boolean |
|
String | If "strong", enables strong ETag. If "weak", enables weak ETag. |
Function | Custom ETag function implementation. Use this only if you know what you are doing. app.set('etag', function (body, encoding) { return generateHash(body, encoding); // consider the function is defined }); |
Please login to continue.