diff --git a/doc/settings/img/error_page_example.png b/doc/settings/img/error_page_example.png
new file mode 100644
index 0000000000000000000000000000000000000000..78e4ae565b72a0e52204ff5c30b9a0007b8de3d6
GIT binary patch
literal 15729
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
J3JHDx{|lf&8A<>E

diff --git a/doc/settings/nginx.md b/doc/settings/nginx.md
index d9749ac9a2cd2b27e82c28277c78eb1b6c0b2a3c_ZG9jL3NldHRpbmdzL25naW54Lm1k..170c64a12bf8516bb5469975ea16a3aa52cf55b1_ZG9jL3NldHRpbmdzL25naW54Lm1k 100644
--- a/doc/settings/nginx.md
+++ b/doc/settings/nginx.md
@@ -363,5 +363,5 @@
 Run `gitlab-ctl reconfigure` to rewrite the NGINX configuration and restart
 NGINX.
 
-## Inserting custom error messages
+## Custom error pages
 
@@ -367,5 +367,8 @@
 
-If you want to print out custom HTTP error messages, create a setting like the following.
+You can use `custom_error_pages` to modify text on the default GitLab error page.
+This can be used for any valid HTTP error code; e.g 404, 502.
+
+As an example the following would modify the default 404 error page.
 
 ```ruby
 nginx['custom_error_pages'] = {
@@ -377,6 +380,10 @@
 }
 ```
 
+This would result in the 404 error page below.
+
+![custom 404 error page](img/error_page_example.png)
+
 Run `gitlab-ctl reconfigure` to rewrite the NGINX configuration and restart
 NGINX.
 
diff --git a/files/gitlab-config-template/gitlab.rb.template b/files/gitlab-config-template/gitlab.rb.template
index d9749ac9a2cd2b27e82c28277c78eb1b6c0b2a3c_ZmlsZXMvZ2l0bGFiLWNvbmZpZy10ZW1wbGF0ZS9naXRsYWIucmIudGVtcGxhdGU=..170c64a12bf8516bb5469975ea16a3aa52cf55b1_ZmlsZXMvZ2l0bGFiLWNvbmZpZy10ZW1wbGF0ZS9naXRsYWIucmIudGVtcGxhdGU= 100644
--- a/files/gitlab-config-template/gitlab.rb.template
+++ b/files/gitlab-config-template/gitlab.rb.template
@@ -695,6 +695,13 @@
 # nginx['real_ip_trusted_addresses'] = []
 # nginx['real_ip_header'] = nil
 # nginx['real_ip_recursive'] = nil
+# nginx['custom_error_pages'] = {
+#   '404' => {
+#     'title' => 'Example title',
+#     'header' => 'Example header',
+#     'message' => 'Example message'
+#   }
+# }
 
 ## Advanced settings
 # nginx['dir'] = "/var/opt/gitlab/nginx"