WARNING: Version 5.3 of Kibana has passed its EOL date.
This documentation is no longer being maintained and may be removed. If you are running this version, we strongly advise you to upgrade. For the latest information, see the current release documentation.
Considerations for basePath
editConsiderations for basePath
editAll communication from the Kibana UI to the server needs to respect the
server.basePath
. Here are the "blessed" strategies for dealing with this
based on the context:
<img>
and <a>
elements
editWrite the src
or href
urls as you would without the base path, but then
replace src
or href
with kbn-src
or kbn-href
.
<img kbn-src="plugins/kibana/images/logo.png">
Getting a static asset url
editUse webpack to import the asset into the build. This will give you a URL in JavaScript and gives webpack a chance to perform optimizations and cache-busting.
// in plugin/public/main.js import uiChrome from 'ui/chrome'; import logoUrl from 'plugins/facechimp/assets/banner.png'; uiChrome.setBrand({ logo: `url(${logoUrl}) center no-repeat` });
API requests from the front-end
editUse chrome.addBasePath()
to append the basePath to the front of the url.
import chrome from 'ui/chrome'; $http.get(chrome.addBasePath('/api/plugin/things'));
Server side
editAppend config.get('server.basePath')
to any absolute URL path.
const basePath = server.config().get('server.basePath'); server.route({ path: '/redirect', handler(req, reply) { reply.redirect(`${basePath}/otherLocation`); } });
BasePathProxy in dev mode
editThe Kibana dev server automatically runs behind a proxy with a random
server.basePath
. This way developers will be constantly verifying that their
code works with basePath, while they write it.
To accomplish this the serve
task does a few things:
-
change the port for the server to the
dev.basePathProxyTarget
setting (default5603
) -
start a
BasePathProxy
atserver.port
-
picks a random 3-letter value for
randomBasePath
-
redirects from
/
to/{randomBasePath}
-
redirects from
/{any}/app/{appName}
to/{randomBasePath}/app/{appName}
so that refreshes should work -
proxies all requests starting with
/{randomBasePath}/
to the Kibana server
-
picks a random 3-letter value for
This proxy can sometimes have unintended side effects in development, so when
needed you can opt out by passing the --no-base-path
flag to the serve
task
or npm start
.
npm start -- --no-base-path