Listen on non-standard ports
diff --git a/apache/files/ports.conf b/apache/files/ports.conf
new file mode 100644
index 0000000..8658d96
--- /dev/null
+++ b/apache/files/ports.conf
@@ -0,0 +1,24 @@
+# If you just change the port or add more ports here, you will likely also
+# have to change the VirtualHost statement in
+# /etc/apache2/sites-enabled/000-default.conf
+
+Listen 80
+
+<IfModule ssl_module>
+	Listen 443
+</IfModule>
+
+<IfModule mod_gnutls.c>
+	Listen 443
+</IfModule>
+
+{%- from "apache/map.jinja" import listen_ports with context %}
+{%- for port in listen_ports.iterkeys() %}
+
+{%- if port not in [80, 443] %}
+Listen {{ port }}
+{%- endif %}
+
+{%- endfor %}
+
+# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
diff --git a/apache/map.jinja b/apache/map.jinja
index e19d399..08be690 100644
--- a/apache/map.jinja
+++ b/apache/map.jinja
@@ -58,3 +58,14 @@
         'group': 'apache',
     },
 }, merge=salt['pillar.get']('apache:server')) %}
+
+{%- set listen_ports = {} %}
+{%- if server.site is defined %}
+{%- for site_name, site in server.site.iteritems() %}
+
+{%- if site.host.get('port', 80) %}
+{%- set dummy=listen_ports.update({site.host.get('port', 80): None}) %}
+{%- endif %}
+
+{%- endfor %}
+{%- endif %}
diff --git a/apache/server/service.sls b/apache/server/service.sls
index 7317933..a64835b 100644
--- a/apache/server/service.sls
+++ b/apache/server/service.sls
@@ -5,6 +5,16 @@
   pkg.installed:
   - names: {{ server.pkgs }} 
 
+apache_ports_config:
+  file.managed:
+  - name /etc/apache2/ports.conf
+  - source: salt://apache/files/ports.conf
+  - template: jinja
+  - require:
+    - pkg: apache_packages
+  - watch_in:
+    - service: apache_service
+
 {%- for module in server.modules %}
 
 {%- if module == 'passenger' %}