diff --git a/src/nginxconfig/templates/domain_sections/reverse_proxy.vue b/src/nginxconfig/templates/domain_sections/reverse_proxy.vue
index 881030a..ebd40e8 100644
--- a/src/nginxconfig/templates/domain_sections/reverse_proxy.vue
+++ b/src/nginxconfig/templates/domain_sections/reverse_proxy.vue
@@ -1,8 +1,82 @@
 <template>
-    <div>Hello world reverse proxy</div>
+    <div>
+        <div v-if="!reverseProxyEnabled" class="field is-horizontal is-aligned-top">
+            <div class="field-label">
+                <label class="label">Reverse proxy</label>
+            </div>
+            <div class="field-body">
+                <div class="field">
+                    <div class="control">
+                        <label class="text">
+                            Reverse proxy is disabled.
+                            <template v-if="$parent.$props.data.php.php.computed">
+                                <br />Reverse proxy cannot be enabled whilst PHP is enabled.
+                            </template>
+                            <template v-if="$parent.$props.data.python.python.computed">
+                                <br />Reverse proxy cannot be enabled whilst Python is enabled.
+                            </template>
+                        </label>
+                    </div>
+                </div>
+            </div>
+        </div>
+
+        <div v-else class="field is-horizontal">
+            <div class="field-label">
+                <label class="label">Reverse proxy</label>
+            </div>
+            <div class="field-body">
+                <div :class="`field${reverseProxyChanged ? ' is-changed' : ''}`">
+                    <div class="control">
+                        <div class="checkbox">
+                            <PrettyCheck v-model="reverseProxy" class="p-default p-curve p-fill p-icon">
+                                <i slot="extra" class="icon fas fa-check"></i>
+                                enable reverse proxy
+                            </PrettyCheck>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+
+        <div v-if="pathEnabled" class="field is-horizontal">
+            <div class="field-label">
+                <label class="label">Path</label>
+            </div>
+            <div class="field-body">
+                <div :class="`field${pathChanged ? ' is-changed' : ''}`">
+                    <div class="control">
+                        <input v-model="path"
+                               class="input"
+                               type="text"
+                               :placeholder="$props.data.path.default"
+                        />
+                    </div>
+                </div>
+            </div>
+        </div>
+
+        <div v-if="proxyPassEnabled" class="field is-horizontal">
+            <div class="field-label">
+                <label class="label">proxy_pass</label>
+            </div>
+            <div class="field-body">
+                <div :class="`field${proxyPassChanged ? ' is-changed' : ''}`">
+                    <div class="control">
+                        <input v-model="proxyPass"
+                               class="input"
+                               type="text"
+                               :placeholder="$props.data.proxyPass.default"
+                        />
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
 </template>
 
 <script>
+    import PrettyCheck from 'pretty-checkbox-vue/check';
     import i18n from '../../i18n';
     import delegatedFromDefaults from '../../util/delegated_from_defaults';
     import computedFromDefaults from '../../util/computed_from_defaults';
@@ -10,7 +84,7 @@
     const defaults = {
         reverseProxy: {
             default: false,
-            enabled: true,
+            enabled: false,
         },
         path: {
             default: '/',
@@ -27,6 +101,9 @@
         display: 'Reverse proxy',                   // Display name for tab
         key: 'reverseProxy',                        // Key for data in parent
         delegated: delegatedFromDefaults(defaults), // Data the parent will present here
+        components: {
+            PrettyCheck,
+        },
         props: {
             data: Object,                           // Data delegated back to us from parent
         },
@@ -36,5 +113,39 @@
             };
         },
         computed: computedFromDefaults(defaults),   // Getters & setters for the delegated data
+        watch: {
+            // If the PHP or Python is enabled, the Reverse proxy will be forced off
+            '$parent.$props.data': {
+                handler(data) {
+                    // This might cause recursion, but seems not to
+                    if (data.php.php.computed || data.python.python.computed) {
+                        this.$props.data.reverseProxy.enabled = false;
+                        this.$props.data.reverseProxy.computed = false;
+                    } else {
+                        this.$props.data.reverseProxy.enabled = true;
+                        this.$props.data.reverseProxy.computed = this.$props.data.reverseProxy.value;
+                    }
+                },
+                deep: true,
+            },
+            // Disable all options if Reverse proxy is disabled
+            '$props.data.reverseProxy': {
+                handler(data) {
+                    const state = data.computed;
+                    if (state) {
+                        this.$props.data.path.enabled = true;
+                        this.$props.data.path.computed = this.$props.data.path.value;
+                        this.$props.data.proxyPass.enabled = true;
+                        this.$props.data.proxyPass.computed = this.$props.data.proxyPass.value;
+                    } else {
+                        this.$props.data.path.enabled = false;
+                        this.$props.data.path.computed = '';
+                        this.$props.data.proxyPass.enabled = false;
+                        this.$props.data.proxyPass.computed = '';
+                    }
+                },
+                deep: true,
+            },
+        },
     };
 </script>