LINUX.ORG.RU
решено ФорумAdmin

nginx - как отключить несуществующие домены?


0

0

С наступающим вас!

На сервере есть внешний ip, установлен nginx - 0.6.32

Для данного ip прописаны несколько доменов 2 уроня, причем часть описано в nginx.conf, а часть нет.

Когда я захожу на http://www.xxx.ru (который описан в nginx) все ок.

Когда захожу на http://www.yyy.ru (который НЕ описан в nginx) я попадаю все равно на http://www.xxx.ru.

Тоесть насколько я понимаю nginx проходит по конфигам, не находит описание домена и почему-то выбирает последний домен хотя server_name четко указан для каждого домена:

Конфиг ngnix.conf:

user www-data;
worker_processes  2;

#error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

events {
        worker_connections  1024;
}

http {
        include sites-enabled/*;
}

Пример sites-enabled/xxx.ru:
server {
        server_name xxx.ru www.xxx.ru;
        access_log  /var/log/nginx/xxx.ru_a.log;
        error_log   /var/log/nginx/xxx.ru_e.log;
        client_max_body_size 10m;
        location ~* ^.+\.(html|htm|jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|mov)$ {
                root  /var/www/xxx.ru/html;
        }
        location / {
                gzip off; #gzip makes scripts feel slower since they have to complete before getting gzipped
                fastcgi_pass 127.0.0.1:5001;
                fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
                include /etc/nginx/fastcgi_params;
        }
}


Как подправить конфиг чтоб небыло такой ситуации? На неописанный домен nginx должен отдавать 404 насколько я понимаю...

★★★

Последнее исправление: Mrak (всего исправлений: 1)

Добавьте это:

server { listen 80 default; server_name _; access_log off; error_log off; return 444; }

# Только если есть SSL server { listen 443 default ssl; server_name _; access_log off; error_log off; return 444; }

Документацию гляньте, там это есть.

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

Спасибо, работает!

Только странно на «access_log off;» ругается... говорит не могу найти файл /usr/local/nginx/off ... ну ладно разберусь попозже - это уже фигня ;)

С НГ!

Mrak ★★★
() автор топика
Ответ на: комментарий от Mrak

Цитируем Mrak

Только странно на «access_log off;» ругается... говорит не могу найти файл /usr/local/nginx/off ... ну ладно разберусь попозже - это уже фигня ;)

да, это распространенная ошибка: потому что директива «error_log off;» его вовсе не отключает, а направляет в файл off. для отключения логов скажи «error_log /dev/null;»

drull ★☆☆☆
()
Ответ на: комментарий от drull

Спасибо, добрый человек. А я все никак не мог понять, нахрена он в файл пишет, если в доке написано, что «off» отключает.

Vit ★★★★★
()
Ответ на: комментарий от anonymous
server {
 listen xxx.xxx.xxx.xxx:80 default;
 server_name _ "";
 access_log /dev/null;
 error_log /dev/null;
 return 444;
}

вот, разобрался. теперь не выдает на айпишник и на «левые» Host, а то раньше выдавало по всяким mail.www.com jabber.www.com и просто по IP.

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