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 mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru