Totally new to nginx, I need a conf file to make nginx act as a reverse proxy to serve request on the same host to elasticsearch and kibana with different url path. I mean, I want:

localhost/es -> localhost:9200
localhost/kibana -> localhost:5601

How can I make it?

Thank you


So, the complete answer is:

server {
    listen 80;
    server_name $hostname localhost;

    auth_basic "Restricted";
    auth_basic_user_file pathtofile;

    location /kibana {
        rewrite ^/kibana/(.*)$ /$1 break;
        proxy_pass http://localhost:5601/;
    location ~ ^/es(.*) {
        rewrite /es/(.*) /$1  break;
        proxy_pass http://localhost:9200;

still, I don't know why, but Kibana first request is served very slowly (40secs). Tried with apache httpd and it's way much faster.

location /es(.*) {
        proxy_pass http://localhost:9200/$args;

location /kibana(.*) {
        proxy_pass http://localhost:5601/$args;

think there is no need in additional comments

  • rewrite instruction needed. Like rewrite /es/(.*) /$1 break; – koopa Jul 19 '18 at 6:59

The location mappings provided by koopa can be simplified to not require the rewrite command and use of regex. This is stated in the nginx proxy_pass documentation

location /es/ {
    proxy_pass http://localhost:9200/;

location /kibana/ {
    proxy_pass http://localhost:5601/;

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.