Bobsans
@Bobsans
Full-Stack Developer

Можно ли сделать динамический location в nginx?

Уважаемые админы!

Подскажите, пожалуйста, можно ли в nginx сделать так, чтобы при срабатывании localhost:8000 статика отдавалась сервером, а при срабатывании бэкапа localhost:8010 - nginx'ом.

К примеру есть вот такой конфиг:
upstream main {
    server                      localhost:8000;
    server                      localhost:8010 backup;
}

server {
    listen                      80;
    ...

    location / {
        proxy_pass              http://main;
        proxy_set_header        Host $http_host;
    }

    location /static {
        alias                   /home/www/static;
        access_log              off;
    }
}

Можно ли как то сделать чет типо этого?:
upstream main {
    server                      localhost:8000;
    server                      localhost:8010 backup;
}

server {
    listen                      80;
    ...

    location / {
        proxy_pass              http://main;
        proxy_set_header        Host $http_host;
    }

    if ($backup_used) {
        location /static {
            alias               /home/www/static;
            access_log          off;
        }
    }
}
  • Вопрос задан
  • 304 просмотра
Пригласить эксперта
Ответы на вопрос 1
ivankomolin
@ivankomolin
Можно, но в вашем случае не нужно.
Разделите логику на 2 разных сервера.
Плюсы:
1. Nginx такое обработает быстрее
2. Проще для восприятия при работе с конфигами

server {
    listen                      8080;

    location / {
        proxy_pass              http://main;
        proxy_set_header        Host $http_host;
    }
}

server {
    listen                      8010;

    location / {
        proxy_pass              http://main;
        proxy_set_header        Host $http_host;
    }

    location /static {
        alias                   /home/www/static;
        access_log              off;
    }
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы