diff --git a/src/backend/internal/nginx.js b/src/backend/internal/nginx.js index 89c43a5..faaf77f 100644 --- a/src/backend/internal/nginx.js +++ b/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); } } diff --git a/src/backend/schema/endpoints/proxy-hosts.json b/src/backend/schema/endpoints/proxy-hosts.json index cd98355..af87c46 100644 --- a/src/backend/schema/endpoints/proxy-hosts.json +++ b/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" } diff --git a/src/backend/templates/_location.conf b/src/backend/templates/_location.conf index 4a1ca91..0b8894d 100644 --- a/src/backend/templates/_location.conf +++ b/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 }} } diff --git a/src/frontend/js/app/nginx/proxy/location-item.ejs b/src/frontend/js/app/nginx/proxy/location-item.ejs index 66e97c4..d6f362a 100644 --- a/src/frontend/js/app/nginx/proxy/location-item.ejs +++ b/src/frontend/js/app/nginx/proxy/location-item.ejs @@ -39,6 +39,7 @@
+ <%- i18n('proxy-hosts', 'cutom-forward-host-help') %>
diff --git a/src/frontend/js/i18n/messages.json b/src/frontend/js/i18n/messages.json index c2da571..a51f27c 100644 --- a/src/frontend/js/i18n/messages.json +++ b/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",