приложение nginx proxy_pass с префиксом

Мне нужно обслуживать несколько экземпляров одного и того же приложения для разных пользователей. Скажем, у меня есть пользователи user1, user2 и user3. Мой nginx.conf будет таким, как показано ниже.

server {    
    listen 80;
    server_name localhost;

    location /user1/ {
        proxy_pass http://myapp1;
    }

    location /user2/ {
        proxy_pass http://myapp2;
    }

    location /user3/ {
        proxy_pass http://myapp3;
    }
}

Приложение будет перенаправлять пользователя туда и обратно несколько раз. Префикс userX теряется при первом прохождении прокси-сервера, и следующие вызовы отправляются на /.

Я использую nginx внутри контейнера докера и уже читал и пробовал ниже.


person Malaka Gunawardhana    schedule 07.03.2018    source источник
comment
Можете ли вы объяснить немного больше?   -  person Shawn C.    schedule 07.03.2018
comment
В браузере я перехожу к localhost/user1. Затем он перенаправляется на localhost/login. Что мне нужно сделать, так это перенаправить на localhost/user1/login.   -  person Malaka Gunawardhana    schedule 08.03.2018


Ответы (1)


Я просто следовал обходному пути, как показано ниже, чтобы сделать то, что мне нужно.

upstream user1 {
    server myapp1;
}
upstream user2 {
    server myapp2;
}
upstream user3 {
    server myapp3;
}
server {    
    listen 80;
    server_name localhost;

    location / {
        //Used a lua script to identify the user
        proxy_pass http://$userX;
    }
}
person Malaka Gunawardhana    schedule 10.03.2018