Skip to content

Commit 30c05b2

Browse files
committed
Support X-Forwarded-Host header when auto-configuring RemoteIpValve
Closes gh-18233
1 parent 303974f commit 30c05b2

File tree

3 files changed

+16
-0
lines changed

3 files changed

+16
-0
lines changed

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/ServerProperties.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,11 @@ public static class Tomcat {
321321
*/
322322
private String remoteIpHeader;
323323

324+
/**
325+
* Name of the HTTP header from which the remote host is extracted.
326+
*/
327+
private String hostHeader = "X-Forwarded-Host";
328+
324329
/**
325330
* Tomcat base directory. If not specified, a temporary directory is used.
326331
*/
@@ -519,6 +524,14 @@ public void setRemoteIpHeader(String remoteIpHeader) {
519524
this.remoteIpHeader = remoteIpHeader;
520525
}
521526

527+
public String getHostHeader() {
528+
return this.hostHeader;
529+
}
530+
531+
public void setHostHeader(String hostHeader) {
532+
this.hostHeader = hostHeader;
533+
}
534+
522535
public Charset getUriEncoding() {
523536
return this.uriEncoding;
524537
}

spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/web/embedded/TomcatWebServerFactoryCustomizer.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,7 @@ private void customizeRemoteIpValve(ConfigurableTomcatWebServerFactory factory)
183183
// The internal proxies default to a white list of "safe" internal IP
184184
// addresses
185185
valve.setInternalProxies(tomcatProperties.getInternalProxies());
186+
valve.setHostHeader(tomcatProperties.getHostHeader());
186187
valve.setPortHeader(tomcatProperties.getPortHeader());
187188
valve.setProtocolHeaderHttpsValue(tomcatProperties.getProtocolHeaderHttpsValue());
188189
// ... so it's safe to add this valve by default.

spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/embedded/TomcatWebServerFactoryCustomizerTests.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,8 @@ private void testRemoteIpValveConfigured() {
243243
assertThat(remoteIpValve.getProtocolHeader()).isEqualTo("X-Forwarded-Proto");
244244
assertThat(remoteIpValve.getProtocolHeaderHttpsValue()).isEqualTo("https");
245245
assertThat(remoteIpValve.getRemoteIpHeader()).isEqualTo("X-Forwarded-For");
246+
assertThat(remoteIpValve.getHostHeader()).isEqualTo("X-Forwarded-Host");
247+
assertThat(remoteIpValve.getPortHeader()).isEqualTo("X-Forwarded-Port");
246248
String expectedInternalProxies = "10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|" // 10/8
247249
+ "192\\.168\\.\\d{1,3}\\.\\d{1,3}|" // 192.168/16
248250
+ "169\\.254\\.\\d{1,3}\\.\\d{1,3}|" // 169.254/16

0 commit comments

Comments
 (0)