Примерно так должно работать:
server {
location / {
# simple version
if ( $host ~ "user1.example.com" ) {
proxy_pass http://example.com/user1;
}
# generic version
if ( $host ~ ^(.+)\.example\.com$ ) {
proxy_pass http://example.com/$1;
}
}
}
Но я сомневаюсь, что это будет работать так, как ожидалось, из-за части "/ user1" в прокси-адресе, хотя я не уверен в последствиях.
Другой способ сделать это, который наверняка сработает, - это либо обслуживать все приложения с одним и тем же сервером nginx, либо назначать определенный порт каждому другому nginx.
Вот как бы я это сделал:
server {
location / {
if ( $host ~ "user1.example.com" ) {
proxy_pass http://127.0.0.1:8000;
}
if ( $host ~ "user2.example.com" ) {
proxy_pass http://127.0.0.1:8001;
}
}
}
В прошлый раз, когда я делал это для проекта колледжа, и я использовал специальный плагин для его обработки, может быть также какой-то плагин, который может сделать это для nginx, но я не нашел ни одного после быстрого поиска.