Skip to content

Commit bff39e9

Browse files
committed
Add server.tomcat.port-header support
Update Tomcat ServerProperties to support the RemoteIpValve portHeader property. Fixes gh-1616
1 parent 0dc46a2 commit bff39e9

File tree

3 files changed

+15
-1
lines changed

3 files changed

+15
-1
lines changed

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

+11
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,8 @@ public static class Tomcat {
209209

210210
private String protocolHeader;
211211

212+
private String portHeader;
213+
212214
private String remoteIpHeader;
213215

214216
private File basedir;
@@ -285,6 +287,14 @@ public void setProtocolHeader(String protocolHeader) {
285287
this.protocolHeader = protocolHeader;
286288
}
287289

290+
public String getPortHeader() {
291+
return this.portHeader;
292+
}
293+
294+
public void setPortHeader(String portHeader) {
295+
this.portHeader = portHeader;
296+
}
297+
288298
public String getRemoteIpHeader() {
289299
return this.remoteIpHeader;
290300
}
@@ -321,6 +331,7 @@ public void customize(Context context) {
321331
valve.setRemoteIpHeader(remoteIpHeader);
322332
valve.setProtocolHeader(protocolHeader);
323333
valve.setInternalProxies(getInternalProxies());
334+
valve.setPortHeader(getPortHeader());
324335
factory.addContextValves(valve);
325336
}
326337

spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/web/ServerPropertiesTests.java

+2
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,7 @@ public void customTomcatRemoteIpValve() throws Exception {
177177
map.put("server.tomcat.remote_ip_header", "x-my-remote-ip-header");
178178
map.put("server.tomcat.protocol_header", "x-my-protocol-header");
179179
map.put("server.tomcat.internal_proxies", "192.168.0.1");
180+
map.put("server.tomcat.port-header", "x-my-forward-port");
180181
bindProperties(map);
181182

182183
TomcatEmbeddedServletContainerFactory container = new TomcatEmbeddedServletContainerFactory();
@@ -188,6 +189,7 @@ public void customTomcatRemoteIpValve() throws Exception {
188189
RemoteIpValve remoteIpValve = (RemoteIpValve) valve;
189190
assertEquals("x-my-protocol-header", remoteIpValve.getProtocolHeader());
190191
assertEquals("x-my-remote-ip-header", remoteIpValve.getRemoteIpHeader());
192+
assertEquals("x-my-forward-port", remoteIpValve.getPortHeader());
191193
assertEquals("192.168.0.1", remoteIpValve.getInternalProxies());
192194
}
193195

spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc

+2-1
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,8 @@ content into your application; rather pick only the properties that you need.
7474
192\.168\.\d{1,3}\.\d{1,3}|\
7575
169\.254\.\d{1,3}\.\d{1,3}|\
7676
127\.\d{1,3}\.\d{1,3}\.\d{1,3} # regular expression matching trusted IP addresses
77-
server.tomcat.protocol-header=x-forwarded-proto # ssl forward headers
77+
server.tomcat.protocol-header=x-forwarded-proto # front end proxy forward header
78+
server.tomcat.port-header= # front end proxy port header
7879
server.tomcat.remote-ip-header=x-forwarded-for
7980
server.tomcat.basedir=/tmp # base dir (usually not needed, defaults to tmp)
8081
server.tomcat.background-processor-delay=30; # in seconds

0 commit comments

Comments
 (0)