Задать вопрос
@ipdesign
UI/UX ДИЗАЙНЕР

Как оставить дефолтный IP-адрес свободным при конфигурации редиректа виртуального хоста в NGINX?

Суть такова:
Есть сервер с виртуальными хостами и одним IP (xxx.xxx.xxx.xxx)
Есть следующая настройка виртуального хоста:
server {

listen 80;
server_name www.domain.com domain.com;
return 301 https://domain.com$request_uri;

}

server {

    listen       443 ssl; 
    server_name  domain.com;

....
  
 }


До настройки https при вводе xxx.xxx.xxx.xxx в адресной строке браузера перекидывало на стандартную страницу "Welcome to Nginx"
Теперь редиректит на domain.com

Как настроить таким образом, чтобы при обращении к xxx.xxx.xxx.xxx оставался стандартный дефолтный хост? т.е. в строке адреса видеть xxx.xxx.xxx.xxx а не domain.com и лицезреть "Welcome to Nginx"?

UPD
Сбросил кеш браузера - все стало как нужно. в других браузерах проверил, тоже все норм.

Исходные настройки были верны

в конфиге default
server {
   listen 80 default_server;
   server_name xxx.xxx.xxx.xxx;
}


в конфиге domain.com
server {

listen 80;
server_name www.domain.com domain.com;
return 301 https://domain.com$request_uri;

}

server {

    listen       443 ssl; 
    server_name  domain.com;

....
  
 }
  • Вопрос задан
  • 483 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 2
ky0
@ky0 Куратор тега Nginx
Миллиардер, филантроп, патологический лгун
Директива default_server параметра listen.
Ответ написан
Hatifnatt
@Hatifnatt
Вам надо добавить отдельный блок server у которого будет несуществующий server_name, например "_", а там уже прописывать default_server для listen. Как вариант можно включить конфигурацию /etc/nginx/sites-available/default с помощью команды:
ngx-conf -e default
Хочу обратить внимание, если у вас указан конкретный IP в конфигурации сайта, например
server {
listen xxx.xxx.xxx.xxx:80;
server_name www.domain.com domain.com;
}

То вам необходимо поправить конфигурацию default и так же добавить там IP, иначе все равно у вас будет открываться ваш сайт. По умолчанию в конфигурации default IP не указан.
server {
        listen 80 default_server;
        listen [::]:80 default_server;
        ...
        root /var/www/html;
        ...
        server_name _;
        ...
}

Соответственно после добавления:
server {
        listen xxx.xxx.xxx.xxx:80 default_server;
        ...
}

Документация https://nginx.ru/ru/docs/http/request_processing.html
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@ipdesign Автор вопроса
UI/UX ДИЗАЙНЕР
Какие странные вещи происходят)

в файле /etc/nginx/sites-available/default у меня:
server {
   listen 80 default_server;
   server_name xxx.xxx.xxx.xxx;
}


меняю на :
listen xxx.xxx.xxx.xxx:80 default_server;
   server_name "_";

и на :
listen 80 default_server;
   server_name "_";


Все равно при вводе xxx.xxx.xxx.xxx в адресе браузера получаю:
https://domain.com

конфиг domain.com при этом одинаковый:
server {

listen 80;
server_name www.domain.com domain.com;
return 301 https://domain.com$request_uri;

}

server {

    listen       443 ssl; 
    server_name  domain.com;

....
  
 }


а если прописать в конфиге domain.com IP-адрес
server {

listen xxx.xxx.xxx.xxx:80;
server_name www.domain.com domain.com;
return 301 https://domain.com$request_uri;

}

то вообще какая-то неведомая фигня:
www.domain.com - попадает на Welcom to Nginx
domain.com и xxx.xxx.xxx.xxx редиректит на https://domain.com
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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