@vitalysokolov

Где я ошибся в конфиге nginx (не работает переадресация)?

Нужно, чтобы www.domain.ru переадресовывал на domain.ru и при http, и при https.
Сейчас domain.ru переадресовывает на https://domain.ru, но переадресация с www не работает.
www.domain.ru открывает заглушку веб-сервера, https://www.domain.ru ругается на несоответствие ssl-сертификата домену (без www), что логично.

Вот мой конфиг. Не могу найти ошибку.

server {
  server_name domain.ru www.domain.ru;
  access_log /var/log/nginx/domain.ru-access.log;
  error_log /var/log/nginx/domain.ru-error.log;

  index index.html index.htm;

  if ($host = www.domain.ru) {
        return 301 https://domain.ru$request_uri;
  }

  location / {
    proxy_pass http://localhost:8090;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Real-IP $remote_addr;
    }

    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/domain.ru/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/domain.ru/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

server {
    if ($host = domain.ru) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

  listen 80;
  listen [::]:80;
  server_name domain.ru;
    return 404; # managed by Certbot
}


Благодарю за помощь :)
  • Вопрос задан
  • 181 просмотр
Решения вопроса 1
ky0
@ky0 Куратор тега Nginx
Миллиардер, филантроп, патологический лгун
server {
  server_name domain.ru www.domain.ru;
  listen 80;

  location / {
        return 301 https://$server_name$request_uri;
  }
}


Самый простой способ - безусловная переадресация.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы