Nginx: Почему редиректит с главной одного домена на другой?

на серверке есть domain1.com, висит на nginx+php5-fpm
Добавил на сервер ip ещё один,
настроил dns для второго домена, ресолвит правильно,
прописал конфиг в /sites-available/domain2.com,
слинковал с /sites-enabled

почему _domain2.com/index.html работает, а _domain2.com редиректит на
_domain1.com гад. не могу понять

ну да, ребутил, а конфиги стандартные вроде, там особо то и менять нечего
server {
   listen 80;

   root /var/www/user1/data/www/domain1.com;
   index index.html index.htm index.php;

   server_name domain1.com;

     location / {
       try_files $uri $uri/ /index.php?$query_string;
       if ($http_host ~ "^115\.1\.1\.1"){ rewrite ^(.*)$ http://domain1.com$1 redirect; }
    }

server {
   listen 80;

   root /var/www/user2/data/www/domain2.com;
   index index.html index.htm index.php;

   server_name domain2.com;

     location / {
       try_files $uri $uri/ /index.php?$query_string;
       if ($http_host ~ "^115\.2\.2\.2"){ rewrite ^(.*)$ http://domain2.com$1 redirect; }
    }
  • Вопрос задан
  • 357 просмотров
Пригласить эксперта
Ответы на вопрос 1
@xbox
А зачем Вам вообще этот огород с проверкой через if и редиректами?
Конструкции if в конфигах nginx использовать не рекомендуется. Они могут тормозить систему и обычно можно без них обойтись.

Если я правильно понял, то у Вас есть два домена и каждый должен отвечать только на своем IP адресе. Сейчас у Вас оба конфига настроены так, что они слушают на любом ip адресе.
listen 80;

А нужно сделать так:
server {
   listen 115.1.1.1:80;
   server_name domain1.com;

   access_log /var/www/logs/nginx-domain1.access.log combined;
   error_log  /var/www/logs/nginx-domain1.error.log;

   root /var/www/user1/data/www/domain1.com;
   index index.html;

     location / {
       try_files ...;
     }

    }


server {
   listen 115.2.2.2:80;
   server_name domain2.com;

   access_log /var/www/logs/nginx-domain2.access.log combined;
   error_log  /var/www/logs/nginx-domain2.error.log;

   root /var/www/user2/data/www/domain2.com;
   index index.html;

     location / {
       try_files ...;
     }

    }


Главное в этом примере
listen 115.1.1.1:80;
Т.е. каждый домен отвечает только на своем IP адресе.
Если DNS записи в настройках домена правильно настроены, то каждый домен только на один IP адрес все равно запросы пересылает.

Дополнительно для каждого домена указывается отдельный лог файл.
Посмотрите, что в логах будет писать. Если обычный лог не помогает, то попробуйте для error_log включить режим debug.

Лог ошибок может собирать расширенную информацию о работе сервера. Это удобно при отладке и выяснении причин:
error_log /var/log/nginx/error.log debug;
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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