diff --git a/CHANGELOG b/CHANGELOG
index 67ded53ad7946baf97dbdda945b0b4b9a921e535..f22c337b726cef40daa8fff6aba1d2e69b407faf 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -3,6 +3,7 @@ Please view this file on the master branch, on stable branches it's out of date.
 v 8.0.0 (unreleased)
   - Fix Error 500 in API when accessing a group that has an avatar (Stan Hu)
   - Remove user OAuth tokens from the database and request new tokens each session (Stan Hu)
+  - Only include base URL in OmniAuth full_host parameter (Stan Hu)
   - Only show recent push event if the branch still exists or a recent merge request has not been created (Stan Hu)
   - Remove satellites
   - Better performance for web editor (switched from satellites to rugged)
diff --git a/config/initializers/1_settings.rb b/config/initializers/1_settings.rb
index bd26ac1da209d452c4e4098edd9631578e6f5d5a..c47e5dab27c7ac3c757aa06c792e1c488694ebc2 100644
--- a/config/initializers/1_settings.rb
+++ b/config/initializers/1_settings.rb
@@ -8,7 +8,7 @@ class Settings < Settingslogic
     def gitlab_on_standard_port?
       gitlab.port.to_i == (gitlab.https ? 443 : 80)
     end
-    
+
     # get host without www, thanks to http://stackoverflow.com/a/6674363/1233435
     def get_host_without_www(url)
       url = URI.encode(url)
@@ -32,14 +32,12 @@ class Settings < Settingslogic
       end
     end
 
+    def build_base_gitlab_url
+      base_gitlab_url.join('')
+    end
+
     def build_gitlab_url
-      custom_port = gitlab_on_standard_port? ? nil : ":#{gitlab.port}"
-      [ gitlab.protocol,
-        "://",
-        gitlab.host,
-        custom_port,
-        gitlab.relative_url_root
-      ].join('')
+      (base_gitlab_url + [gitlab.relative_url_root]).join('')
     end
 
     # check that values in `current` (string or integer) is a contant in `modul`.
@@ -64,6 +62,17 @@ class Settings < Settingslogic
       end
       value
     end
+
+    private
+
+    def base_gitlab_url
+      custom_port = gitlab_on_standard_port? ? nil : ":#{gitlab.port}"
+      [ gitlab.protocol,
+        "://",
+        gitlab.host,
+        custom_port
+      ]
+    end
   end
 end
 
@@ -123,6 +132,7 @@ Settings.gitlab['email_enabled'] ||= true if Settings.gitlab['email_enabled'].ni
 Settings.gitlab['email_from'] ||= "gitlab@#{Settings.gitlab.host}"
 Settings.gitlab['email_display_name'] ||= "GitLab"
 Settings.gitlab['email_reply_to'] ||= "noreply@#{Settings.gitlab.host}"
+Settings.gitlab['base_url']   ||= Settings.send(:build_base_gitlab_url)
 Settings.gitlab['url']        ||= Settings.send(:build_gitlab_url)
 Settings.gitlab['user']       ||= 'git'
 Settings.gitlab['user_home']  ||= begin
diff --git a/config/initializers/7_omniauth.rb b/config/initializers/7_omniauth.rb
index 7f73546ac89ab13de781b567d4a97e40b6ea219b..70ed10e8275ef461c703d98064f2b31cf3fb643f 100644
--- a/config/initializers/7_omniauth.rb
+++ b/config/initializers/7_omniauth.rb
@@ -11,7 +11,7 @@ if Gitlab::LDAP::Config.enabled?
   end
 end
 
-OmniAuth.config.full_host = Settings.gitlab['url']
+OmniAuth.config.full_host = Settings.gitlab['base_url']
 OmniAuth.config.allowed_request_methods = [:post]
 #In case of auto sign-in, the GET method is used (users don't get to click on a button)
 OmniAuth.config.allowed_request_methods << :get if Gitlab.config.omniauth.auto_sign_in_with_provider.present?