Skip to content

Commit f248719

Browse files
authored
feat(core): Add trustProxy option to ApiOptions (#3567)
1 parent 210137f commit f248719

File tree

26 files changed

+95
-24
lines changed

26 files changed

+95
-24
lines changed

docs/docs/guides/deployment/production-configuration/index.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,24 @@ show timezone;
117117
```
118118
and you should expect to see `UTC` or `Etc/UTC`.
119119

120+
## Trust proxy
121+
122+
When deploying your Vendure application behind a reverse proxy (usually the case with most hosting services), consider configuring Express's `trust proxy` setting. This allows you to retrieve the original IP address from the `X-Forwarded-For` header, which proxies use to forward the client's IP address.
123+
124+
You can set the `trustProxy` option in your `VendureConfig`:
125+
126+
```ts
127+
import { VendureConfig } from '@vendure/core';
128+
129+
export const config: VendureConfig = {
130+
apiOptions: {
131+
trustProxy: 1, // Trust the first proxy in front of your app
132+
},
133+
};
134+
```
135+
136+
For more details on configuring `trust proxy`, refer to the [Express documentation](https://expressjs.com/en/guide/behind-proxies.html).
137+
120138
## Security Considerations
121139

122140
Please read over the [Security](/guides/developer-guide/security) section of the Developer Guide for more information on how to secure your Vendure application.

docs/docs/reference/typescript-api/assets/asset-options.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
1111

1212
## AssetOptions
1313

14-
<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="653" packageName="@vendure/core" />
14+
<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="671" packageName="@vendure/core" />
1515

1616
The AssetOptions define how assets (images and other files) are named and stored, and how preview images are generated.
1717

docs/docs/reference/typescript-api/auth/auth-options.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
1111

1212
## AuthOptions
1313

14-
<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="338" packageName="@vendure/core" />
14+
<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="356" packageName="@vendure/core" />
1515

1616
The AuthOptions define how authentication and authorization is managed.
1717

docs/docs/reference/typescript-api/auth/cookie-options.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
1111

1212
## CookieOptions
1313

14-
<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="233" packageName="@vendure/core" />
14+
<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="251" packageName="@vendure/core" />
1515

1616
Options for the handling of the cookies used to track sessions (only applicable if
1717
`authOptions.tokenMethod` is set to `'cookie'`). These options are passed directly

docs/docs/reference/typescript-api/auth/superadmin-credentials.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
1111

1212
## SuperadminCredentials
1313

14-
<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="829" packageName="@vendure/core" />
14+
<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="847" packageName="@vendure/core" />
1515

1616
These credentials will be used to create the Superadmin user & administrator
1717
when Vendure first bootstraps.

docs/docs/reference/typescript-api/common/bootstrap.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
1111

1212
## bootstrap
1313

14-
<GenerationInfo sourceFile="packages/core/src/bootstrap.ts" sourceLine="159" packageName="@vendure/core" />
14+
<GenerationInfo sourceFile="packages/core/src/bootstrap.ts" sourceLine="160" packageName="@vendure/core" />
1515

1616
Bootstraps the Vendure server. This is the entry point to the application.
1717

@@ -87,7 +87,7 @@ Parameters
8787

8888
## BootstrapOptions
8989

90-
<GenerationInfo sourceFile="packages/core/src/bootstrap.ts" sourceLine="41" packageName="@vendure/core" since="2.2.0" />
90+
<GenerationInfo sourceFile="packages/core/src/bootstrap.ts" sourceLine="42" packageName="@vendure/core" since="2.2.0" />
9191

9292
Additional options that can be used to configure the bootstrap process of the
9393
Vendure server.

docs/docs/reference/typescript-api/configuration/api-options.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ interface ApiOptions {
3333
channelTokenKey?: string;
3434
cors?: boolean | CorsOptions;
3535
middleware?: Middleware[];
36+
trustProxy?: TrustProxyOptions;
3637
apolloServerPlugins?: ApolloServerPlugin[];
3738
introspection?: boolean;
3839
}
@@ -125,6 +126,11 @@ Set the CORS handling for the server. See the [express CORS docs](https://github
125126
<MemberInfo kind="property" type={`<a href='/reference/typescript-api/common/middleware#middleware'>Middleware</a>[]`} default={`[]`} />
126127

127128
Custom Express or NestJS middleware for the server. More information can be found in the <a href='/reference/typescript-api/common/middleware#middleware'>Middleware</a> docs.
129+
### trustProxy
130+
131+
<MemberInfo kind="property" type={`<a href='/reference/typescript-api/configuration/trust-proxy-options#trustproxyoptions'>TrustProxyOptions</a>`} default={`false`} />
132+
133+
Set the trust proxy configuration for the server. See the [express proxy docs](https://expressjs.com/en/guide/behind-proxies.html).
128134
### apolloServerPlugins
129135

130136
<MemberInfo kind="property" type={`ApolloServerPlugin[]`} default={`[]`} />

docs/docs/reference/typescript-api/configuration/entity-options.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
1111

1212
## EntityOptions
1313

14-
<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="1014" packageName="@vendure/core" since="1.3.0" />
14+
<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="1032" packageName="@vendure/core" since="1.3.0" />
1515

1616
Options relating to the internal handling of entities.
1717

docs/docs/reference/typescript-api/configuration/runtime-vendure-config.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
1111

1212
## RuntimeVendureConfig
1313

14-
<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="1278" packageName="@vendure/core" />
14+
<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="1296" packageName="@vendure/core" />
1515

1616
This interface represents the VendureConfig object available at run-time, i.e. the user-supplied
1717
config values have been merged with the <a href='/reference/typescript-api/configuration/default-config#defaultconfig'>defaultConfig</a> values.

docs/docs/reference/typescript-api/configuration/system-options.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import MemberDescription from '@site/src/components/MemberDescription';
1111

1212
## SystemOptions
1313

14-
<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="1103" packageName="@vendure/core" since="1.6.0" />
14+
<GenerationInfo sourceFile="packages/core/src/config/vendure-config.ts" sourceLine="1121" packageName="@vendure/core" since="1.6.0" />
1515

1616
Options relating to system functions.
1717

0 commit comments

Comments
 (0)