diff --git a/manifests/site.pp b/manifests/site.pp
index 91e73642cb..14ed9f96df 100644
--- a/manifests/site.pp
+++ b/manifests/site.pp
@@ -633,7 +633,7 @@ node /^mirror\d*\..*\.openstack\.org$/ {
$group = "mirror"
class { 'openstack_project::server':
- iptables_public_tcp_ports => [22, 80, 8080, 8081],
+ iptables_public_tcp_ports => [22, 80, 8080, 8081, 8082],
sysadmins => hiera('sysadmins', []),
afs => true,
afs_cache_size => 50000000, # 50GB
diff --git a/modules/openstack_project/templates/mirror.vhost.erb b/modules/openstack_project/templates/mirror.vhost.erb
index 809f07159b..4b71e525d8 100644
--- a/modules/openstack_project/templates/mirror.vhost.erb
+++ b/modules/openstack_project/templates/mirror.vhost.erb
@@ -11,6 +11,9 @@ NameVirtualHost <%= @vhost_name %>:8080
Listen 8081
NameVirtualHost <%= @vhost_name %>:8081
+Listen 8082
+NameVirtualHost <%= @vhost_name %>:8082
+
:<%= @port %>>
ServerName <%= @srvname %>
<% if @serveraliases.is_a? Array -%>
@@ -253,3 +256,58 @@ NameVirtualHost <%= @vhost_name %>:8081
ProxyPassReverse "/cloudfront/" "https://dseasb33srnrn.cloudfront.net/"
+
+:8082>
+ ServerName <%= @srvname %>:8082
+ <% if @serveraliases.is_a? Array -%>
+ <% @serveraliases.each do |name| -%>
+ <%= " ServerAlias #{name}:8082\n" %>
+ <% end %>
+ <% elsif @serveraliases != nil -%>
+ <%= " ServerAlias #{@serveraliases}:8082" -%>
+ <% end %>
+
+ # Disable directory listing by default.
+
+ Order Deny,Allow
+ Deny from all
+ Options None
+ AllowOverride None
+
+
+ ErrorLog /var/log/<%= scope.lookupvar("httpd::params::apache_name") %>/<%= @name %>_8082_error.log
+ LogLevel warn
+ CustomLog /var/log/<%= scope.lookupvar("httpd::params::apache_name") %>/<%= @name %>_8082_access.log combined
+ ServerSignature Off
+
+ # Caching reverse proxy for things that don't make sense in AFS
+ #
+ # General cache rules
+ CacheRoot "/var/cache/apache2/proxy"
+ CacheDirLevels 5
+ CacheDirLength 2
+ # SSL support
+ SSLProxyEngine on
+ # Prevent thundering herds.
+ CacheLock on
+ CacheLockPath "/tmp/mod_cache-lock"
+ CacheLockMaxAge 5
+ # 5GiB
+ CacheMaxFileSize 5368709120
+ # Ignore expire headers as the urls use sha256 hashes.
+ CacheIgnoreQueryString On
+ CacheStoreExpired On
+
+ # NOTE(SamYaple): Docker has historically not allowed to have anything in
+ # the URI, but it wasn't enforced until they started validating the config
+ # in docker-ce 17.10. Prior to that, it was working fine.
+ CacheEnable disk "/"
+ ProxyPass "/" "https://registry-1.docker.io/" ttl=120 keepalive=On retry=0
+ ProxyPassReverse "/" "https://registry-1.docker.io/"
+
+ # dseasb33srnrn.cloudfront.net
+ CacheEnable disk "/cloudfront"
+ ProxyPass "/cloudfront/" "https://dseasb33srnrn.cloudfront.net/" ttl=120 keepalive=On retry=0
+ ProxyPassReverse "/cloudfront/" "https://dseasb33srnrn.cloudfront.net/"
+
+