@alexq2

Как настроить проксирование в nginx в зависимости от dns?

Добрый день!
Есть прокси сервер(proxy-01) с такими dns dev.example.com test.example.com preprod.example.com. C proxy-01 запрсы приходят на app-01/app-02(тут сайты dev/test/preprod) на всех сайтах одинаковые локейшены, но разные root_document.
Я знаю как как разрулить проксирование с помощью апстримов повесив сайты на разные порты.
Вопрос как это все сделать на одном порту?
Спасибо!
  • Вопрос задан
  • 277 просмотров
Решения вопроса 2
@mezhuev
Системный администратор
Из того, что понял, вам нужна подобная конструкция:
server {
        listen 80;
        server_name app.example.com;

        location / {
                proxy_pass http://app-01/;
        }
}

server {
        listen 80;
        server_name preprod.example.com;

        location / {
                proxy_pass http://app-02/;
        }
}
Ответ написан
Комментировать
ky0
@ky0 Куратор тега Nginx
Миллиардер, филантроп, патологический лгун
В зависимости от заголовка Host обрабатывать разными секциями конфига.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@alexq2 Автор вопроса
Ребята Павел Межуев ky0 Алексей Тен, спасибо!

Ниже пример конфига. На каждый сайт отдельный конфиг

nginx-proxy

upstream dev {
    server 172.17.1.1;
}


server {

        listen       80;
        server_name  dev.example.com;
        client_max_body_size 32m;


        server_name_in_redirect off;

        gzip on;
        gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript;



        location / {
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-Host $host;
            proxy_set_header X-Forwarded-Server $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_pass http://dev;

        }
}


nginx-app

server {

        listen       80;
        server_name  dev.example.com;

        set $app_dir "/opt/app/dev/app";

        root $app_dir;
        index index.html;
        client_max_body_size 32m;

        access_log "/var/log/nginx/dev.access.log";
        error_log "/var/log/nginx/dev.error.log";


        location / {
        	root $app_dir;
            index index.html;
            add_header 'X-XSS-Protection' "1; mode=block;";
            try_files $uri $uri/ /index.html =404;
        }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы