Как подключить разные конфиги одного сайта для разных IP в nginx?

D
На сайте с 28.06.2008
Offline
1101
518

Переписал сайт на свой движок, вроде все проверил, но хотелось бы погонять его в почти боевых условиях, т.е. с рекламой и кешированием. Сейчас они (сайты) лежат в разных директориях)

Я задолбался мучать GPT - ничего верного она так и не посоветовала.

http {
    map $remote_addr $config_file {
        default      /etc/nginx/sites-available/old.ru;
        192.168.1.1 /etc/nginx/sites-available/new.ru;
    }

    include $config_file;
}

Так не работает -  nginx: [emerg] open() "/etc/nginx/$config_file" failed (2: No such file or directory) in /etc/nginx/nginx.conf:402

Так тоже не работает

http {
    server {
        listen 80;

        if ($remote_addr = 192.168.1.1) {
            include /etc/nginx/sites-available/new.ru;
        }

        if ($remote_addr != 192.168.1.1) {
            include /etc/nginx/sites-available/old.ru;
        }
    }
}

nginx: [emerg] "include" directive is not allowed here in /etc/nginx/sites-available/conf.ru:82


Помогите плиз - это возможно подключить другой конфиг сайта для определенного IP ?

Алеандр
На сайте с 08.12.2010
Offline
183
#1
Никогда так не делал. Если нужно проверить сайт - поднимается его копия на другом домене или поддомене, с ограничением доступа. Либо, если есть возможность - другой IP у хостера, там располагаете полную копию и сменив в hosts лично для себя сопоставление пары IP-имя домена - заходите на сайт как на реальный, при этом попадая на тестовый.
Ilya74
На сайте с 12.06.2008
Offline
353
#2
Dram :
Так не работает -  nginx: [emerg] open() "/etc/nginx/$config_file" failed (2: No such file or directory) in /etc/nginx/nginx.conf:402

Дело в том, что в include нельзя использовать переменные. include выполняются до вычисления переменных.

Dram :

nginx: [emerg] "include" directive is not allowed here in /etc/nginx/sites-available/conf.ru:82

По той же причине include не может использоваться в if, поскольку это вычисляемая конструкция.

В вашем случае можно в конструкциях if вставлять нужные директивы конфигурации, либо делать, как посоветовали выше.

⚡️ Хостинг и VPS в Москве, Новосибирске, Нидерландах, США ( https://x5x.host )
D
На сайте с 28.06.2008
Offline
1101
#3
Я уже сделал как посоветовали выше, но реклама не грузится для другого домена, а я хочу проверить все досконально, траф большой, не хочу потом в панике гасить пожар если вдруг что не так.
W1
На сайте с 22.01.2021
Offline
285
#4
Dram #:
реклама не грузится для другого домена

Домен же будет тот же самый, IP сервера другой, с подключением через hosts:

Алеандр #:
другой IP у хостера, там располагаете полную копию и сменив в hosts лично для себя сопоставление пары IP-имя домена
Мой форум - https://webinfo.guru –Там я всегда на связи
D
На сайте с 28.06.2008
Offline
1101
#5
Блин точно, про вариант  hosts  забыл, коммент выше бегло прочитал. Я тестировал на другом домене. Спс. все вопрос снят

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий