LINUX.ORG.RU

Путаница с переадрисацией хостов


0

1

На сервере на порте 80 стоит nginx (на нём один виртуальный хост: site.ru), он связан с Апач 2 на порту 8080 (где тоже стоит один виртуальный хост: site.ru).

Проблема:

Когда набираю абракодабру поддомина, типа: nf7fnwqsdf.site.ru/index.htm он все равно выдаёт страницу с site.ru/index.htm - хотя должен отдать 404 ошибку (error_page 404 400 401 403 http://site.ru/error/403.html;)

При этом если запросить nf7fnwqsdf.site.ru/robots.txt он выдаст файл с левым содержанием:

User-agent: * Disallow: /

т.е. отличный от содержания site.ru/robots.txt

Вопрос как запретить выдавать контент если вызываемого хоста нет в списки виртуальных хостов? Или возможно где то переменная которая из-за которой все это происходит?


Мне кажется это где то в настройках энгинкса или апача, но скорее всего в первом.

Roman_S ()

должен отдать 404 ошибку

не должен. Он ломится в дефолт-сайт. Вообще, правильно это разрулить не только в конфиге, но и в днс, потому что у вас там не прописанные поддомены, а звёздочка, разрешающая все.

wokenlex ()
Ответ на: комментарий от wokenlex

З.ы. так уточняю, если с днс переправляется на ip сервака, то тот в конфиге смотрит виртуальные хосты на энгинкс, и если там не находит переводит на дефолт-сайт.

Тогда вопрос: а если в энгинксе параметр который отвечает за это, к примеру если указан не существующий виртуальный хост, то отдать/перебросить на файл с сообщением ошибка.

Roman_S ()
Ответ на: комментарий от beastie

beastie thank, yep it is working!

Только очередность наоборот!

server { listen 80; server_name site.ru; proxy_pass http://localhost:8080; }

server { listen 80 default; server_name .site.ru; return 404; }

Roman_S ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.