2014-01-29 4 views
1

У меня есть 2 файла с proxy_pass:Nginx proxy_pass, определить случай несоответствия?

server { 
    listen 80; 
    server_name www.domain1.fr; 

    location/{ 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header HOST $http_host; 
     proxy_set_header X-NginX-Proxy true; 

     proxy_pass http://127.0.0.1:2368; 
     proxy_redirect off; 
    } 
} 

и

server { 
    listen 80; 
    server_name www.domain2.fr; 

    location/{ 
     proxy_set_header X-Real-IP $remote_addr; 
     proxy_set_header HOST $http_host; 
     proxy_set_header X-NginX-Proxy true; 

     proxy_pass http://127.0.0.1:2369; 
     proxy_redirect off; 
    } 
} 

Они оба работают нормально.

Теперь если я иду к этому серверу через другое доменное имя (, определенное на моем DNS-сервере таргетирования один и тот же IP-адрес), например. www.domain3.fr, а не 404, я получил тот же результат, что и www.domain2.fr!

Я думаю, это из-за последних location /, но как я могу сделать ошибку 404, если доменное имя не совпадает с server_name?

ответ

1

Я много раз отвечал на этот вопрос, я думаю о том, чтобы найти способ сделать его общим, чтобы я мог поделиться им, когда задан вопрос.

Вот другие ответы, если вы хотите, чтобы посмотреть на это

вы можете прочитать на любом, почему это происходит, на этом ссылка для ссылки How nginx processes a request

Простой ответ - небольшой серверный блок, чтобы предотвратить его.

server { 
    listen 80 default_server; 
    # return a code maybe or do any thing 
    return 404; 
} 

, конечно, перезагрузите nginx после этого, чтобы отразить настройки.

+0

Да, я думаю, это очень распространенный случай. Спасибо за ссылки и фрагменты! – grena

Смежные вопросы