diff --git a/changelog.html b/changelog.html
index 65e171dbd33ef10ee7a5c66a571ba5c2968c30d8..caacd7b27dc85f8df263ed8b5bf1a22c98e03c64 100644
--- a/changelog.html
+++ b/changelog.html
@@ -55,6 +55,9 @@ Upcoming changes
+ -
+ Reverted change in 1.500 causing serious regression in HTTPS reverse proxy setups.
+ (issue 16368)
-
Bogus “Build Record Root Directory” inadequately diagnosed.
(issue 16457)
diff --git a/core/src/main/java/jenkins/model/Jenkins.java b/core/src/main/java/jenkins/model/Jenkins.java
index 4808e565439c3c2a95f5648b0a651c2064b40543..deebb958cee68dee23164d672ff03743c21e46bf 100755
--- a/core/src/main/java/jenkins/model/Jenkins.java
+++ b/core/src/main/java/jenkins/model/Jenkins.java
@@ -1866,20 +1866,15 @@ public class Jenkins extends AbstractCIBase implements ModifiableTopLevelItemGro
* @see #getRootUrlFromRequest()
*/
public String getRootUrl() {
-
String url = JenkinsLocationConfiguration.get().getUrl();
- if(url!=null && !url.endsWith("/")) {
- url += '/';
+ if(url!=null) {
+ if (!url.endsWith("/")) url += '/';
+ return url;
}
-
StaplerRequest req = Stapler.getCurrentRequest();
-
- if(req == null) return url;
-
- if(url == null) return getRootUrlFromRequest();
-
- // replace current protocol, if any, with request protocol
- return url.replaceFirst("^\\w+(?=://)", req.getScheme());
+ if(req!=null)
+ return getRootUrlFromRequest();
+ return null;
}
/**
diff --git a/core/src/test/java/jenkins/model/JenkinsGetRootUrlTest.java b/core/src/test/java/jenkins/model/JenkinsGetRootUrlTest.java
index a138cb5bfb9452f33d8e1e85a85c96b2af75133b..721ae53f2cfa3e7eff45455cbbae3439e4ce943f 100644
--- a/core/src/test/java/jenkins/model/JenkinsGetRootUrlTest.java
+++ b/core/src/test/java/jenkins/model/JenkinsGetRootUrlTest.java
@@ -87,12 +87,20 @@ public class JenkinsGetRootUrlTest {
@Bug(16368)
@Test
- public void inheritProtocolWhenDispatchingRequest() {
+ public void doNotInheritProtocolWhenDispatchingRequest() {
configured("http://configured.host/");
accessing("https://real.host/");
- rootUrlIs("https://configured.host/");
+ rootUrlIs("http://configured.host/");
+ }
+
+ @Bug(16511)
+ @Test
+ public void doNotInheritProtocolWhenDispatchingRequest2() {
+ configured("https://ci/jenkins/");
+ accessing("http://localhost:8080/");
+ rootUrlIs("https://ci/jenkins/");
}
private void rootUrlIs(final String expectedRootUrl) {