Re: Ошибка "[warn] conflicting server name "site.ru" on 0.0.0.0:80, ignored"

Maxim Dounin mdounin на mdounin.ru
Пн Сен 2 14:02:59 UTC 2019


Hello!

On Mon, Sep 02, 2019 at 09:38:30AM -0400, grey wrote:

> Приветствую.
> 
> 
> Решил перевести сайт на https, заодно убрать www в имени домена. Раньше
> делал это через if-ы, но тут говорят, что они зло, потому захотел сделать
> всё по уму...
> 
> # редирект с http на https
> 	server {
> 		listen       80;
> 		server_name  site.ru www.site.ru;
> 		return 301 https://site.ru$request_uri;
> 	}
> 
> # редирект с www на non-www
> 	server {
> 		server_name www.site.ru; # <------------ ошибка
> 		rewrite ^(.*)$ https://site.ru$1 permanent;
> 	}
> 
> 	server {
> 		listen       443 ssl default_server;
> 		server_name  site.ru;
> ...
> 
> 
> В результате получаю ошибку "[warn] conflicting server name "www.site.ru" on
> 0.0.0.0:80, ignored". Ругает на строку "server_name  www.site.ru;", но как
> сделать по другому - не пойму. Убрать строку наверно будет не правильно,
> т.к. хостов может быть много, а мне нужно для конкретного хоста сделать те
> или иные манипуляции.
> 
> Подскажите, плз, что я делаю не так?

У вас имя "www.site.ru" для порта 80 используется и в первом, и во 
втором блоке server{}.  Это не имеет смысла, так как запрос может 
быть обработан только в одном блоке server{}.  То есть в данном 
конкретном конфиге - второй блок server{}, фактически, не имеет 
смысла.  Именно из-за этого nginx и ругается.

Подозреваю, что на самом деле второй блок server{} должен был быть 
про перенаправление с www на без-www для https, то есть содержать 
"listen 443 ssl;".

-- 
Maxim Dounin
http://mdounin.ru/


Подробная информация о списке рассылки nginx-ru