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 @@