Merge pull request #1086 from dsteinkopf/master
fix baseURL handling in HttpUtils, fixes #1083
diff --git a/src/main/java/com/gitblit/utils/HttpUtils.java b/src/main/java/com/gitblit/utils/HttpUtils.java
index 818ed49..2fd8d89 100644
--- a/src/main/java/com/gitblit/utils/HttpUtils.java
+++ b/src/main/java/com/gitblit/utils/HttpUtils.java
@@ -78,6 +78,7 @@
}
}
+ // try to use reverse-proxy's context
String context = request.getContextPath();
String forwardedContext = request.getHeader("X-Forwarded-Context");
if (StringUtils.isEmpty(forwardedContext)) {
@@ -92,13 +93,24 @@
context = context.substring(1);
}
+ // try to use reverse-proxy's hostname
+ String host = request.getServerName();
+ String forwardedHost = request.getHeader("X-Forwarded-Host");
+ if (StringUtils.isEmpty(forwardedHost)) {
+ forwardedHost = request.getHeader("X_Forwarded_Host");
+ }
+ if (!StringUtils.isEmpty(forwardedHost)) {
+ host = forwardedHost;
+ }
+
+ // build result
StringBuilder sb = new StringBuilder();
sb.append(scheme);
sb.append("://");
- sb.append(request.getServerName());
+ sb.append(host);
if (("http".equals(scheme) && port != 80)
|| ("https".equals(scheme) && port != 443)) {
- sb.append(":" + port);
+ sb.append(":").append(port);
}
sb.append(context);
return sb.toString();