Sfoglia il codice sorgente

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

Awesome work!
kolbii 6 anni fa
parent
commit
d79fcbf447

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

@@ -151,7 +151,16 @@ const internalNginx = {
 
             const locationRendering = async () => {
                 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": {
             "$ref": "#/definitions/forward_port"
           },
+          "forward_path": {
+            "type": "string"
+          },
           "advanced_config": {
             "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-Proto  $scheme;
     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 }}
   }
 

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

@@ -39,6 +39,7 @@
                 <div class="form-group">
                     <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>
+                    <span style="font-size: 9px;"><%- i18n('proxy-hosts', 'cutom-forward-host-help') %></span>
                 </div>
             </div>
             <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.",
       "access-list": "Access List",
       "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": {
       "title": "Redirection Hosts",