А зачем Вам вообще этот огород с проверкой через 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;