浏览代码

This commit resolves #98 so custom location can forward to custom path. (#99)

Awesome work!
kolbii 6 年之前
父节点
当前提交
d79fcbf447

+ 10 - 1
src/backend/internal/nginx.js

@@ -151,7 +151,16 @@ const internalNginx = {
 
 
             const locationRendering = async () => {
             const locationRendering = async () => {
                 for (let i = 0; i < host.locations.length; i++) {
                 for (let i = 0; i < host.locations.length; i++) {
-                    renderedLocations += await renderer.parseAndRender(template, host.locations[i]);
+                    let locationCopy = Object.assign({}, host.locations[i]);
+
+                    if (locationCopy.forward_host.indexOf('/') > -1) {
+                        const splitted = locationCopy.forward_host.split('/');
+
+                        locationCopy.forward_host = splitted.shift();
+                        locationCopy.forward_path = `/${splitted.join('/')}`;
+                    }
+
+                    renderedLocations += await renderer.parseAndRender(template, locationCopy);
                 }
                 }
             }
             }
 
 

+ 3 - 0
src/backend/schema/endpoints/proxy-hosts.json

@@ -99,6 +99,9 @@
           "forward_port": {
           "forward_port": {
             "$ref": "#/definitions/forward_port"
             "$ref": "#/definitions/forward_port"
           },
           },
+          "forward_path": {
+            "type": "string"
+          },
           "advanced_config": {
           "advanced_config": {
             "type": "string"
             "type": "string"
           }
           }

+ 1 - 1
src/backend/templates/_location.conf

@@ -3,7 +3,7 @@
     proxy_set_header X-Forwarded-Scheme $scheme;
     proxy_set_header X-Forwarded-Scheme $scheme;
     proxy_set_header X-Forwarded-Proto  $scheme;
     proxy_set_header X-Forwarded-Proto  $scheme;
     proxy_set_header X-Forwarded-For    $remote_addr;
     proxy_set_header X-Forwarded-For    $remote_addr;
-    proxy_pass       {{ forward_scheme }}://{{ forward_host }}:{{ forward_port }};
+    proxy_pass       {{ forward_scheme }}://{{ forward_host }}:{{ forward_port }}{{ forward_path }};
     {{ advanced_config }}
     {{ advanced_config }}
   }
   }
 
 

+ 1 - 0
src/frontend/js/app/nginx/proxy/location-item.ejs

@@ -39,6 +39,7 @@
                 <div class="form-group">
                 <div class="form-group">
                     <label class="form-label"><%- i18n('proxy-hosts', 'forward-host') %><span class="form-required">*</span></label>
                     <label class="form-label"><%- i18n('proxy-hosts', 'forward-host') %><span class="form-required">*</span></label>
                     <input type="text" name="forward_host" class="form-control text-monospace model" placeholder="" value="<%- forward_host %>" autocomplete="off" maxlength="50" required>
                     <input type="text" name="forward_host" class="form-control text-monospace model" placeholder="" value="<%- forward_host %>" autocomplete="off" maxlength="50" required>
+                    <span style="font-size: 9px;"><%- i18n('proxy-hosts', 'cutom-forward-host-help') %></span>
                 </div>
                 </div>
             </div>
             </div>
             <div class="col-sm-4 col-md-4">
             <div class="col-sm-4 col-md-4">

+ 2 - 1
src/frontend/js/i18n/messages.json

@@ -114,7 +114,8 @@
       "help-content": "A Proxy Host is the incoming endpoint for a web service that you want to forward.\nIt provides optional SSL termination for your service that might not have SSL support built in.\nProxy Hosts are the most common use for the Nginx Proxy Manager.",
       "help-content": "A Proxy Host is the incoming endpoint for a web service that you want to forward.\nIt provides optional SSL termination for your service that might not have SSL support built in.\nProxy Hosts are the most common use for the Nginx Proxy Manager.",
       "access-list": "Access List",
       "access-list": "Access List",
       "allow-websocket-upgrade": "Websockets Support",
       "allow-websocket-upgrade": "Websockets Support",
-      "ignore-invalid-upstream-ssl": "Ignore Invalid SSL"
+      "ignore-invalid-upstream-ssl": "Ignore Invalid SSL",
+      "cutom-forward-host-help": "Use 1.1.1.1/path for sub-folder forwarding"
     },
     },
     "redirection-hosts": {
     "redirection-hosts": {
       "title": "Redirection Hosts",
       "title": "Redirection Hosts",