Принудительно использовать WWW без WWW с Https на нескольких сайтах Nginx

У меня есть несколько сайтов, которые я бы хотел перенаправить на не www https. В настоящее время все выглядит хорошо, за исключением того факта, что когда вы вручную вводите https://www.example.com/ для любого из сайтов, он не перенаправляется, и вы попадаете на первый веб-сайт в алфавитном порядке. Я получаю различные ошибки при попытке сделать это. Моя текущая настройка включена: Главный сайт

server {
    listen 80;
    listen [::]:80 ipv6only=on;
    server_name example.com www.example.com;
    rewrite ^ https://example.com$request_uri? permanent;
}
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2 default_server ipv6only=on;
}

Любой другой сайт

server {
    listen 80;
    server_name www.example.com example.com;
    rewrite ^ https://example.com$request_uri? permanent;
}
server {
    listen 443 ssl http2;
}

То, что я пытался перенаправить каждый сайт не по адресу https

server {
  server_name example.com;
  listen 443 ssl http2;
}
server {
  listen       80;
  server_name  example.com www.example.com;
  return       301 https://example.com$request_uri;
}
server {
  listen 443 ssl http2;
  server_name www.example.com;
  return 301 https://example.com$request_uri;
}

1 ответ

Я исправил это так:

Главный сайт:

server {
    listen 80;
    listen [::]:80 ipv6only=on;
    server_name example.com www.example.com;
    rewrite ^ https://example.com$request_uri? permanent;
}
server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2 ipv6only=on;
    server_name www.example.com;
    rewrite ^ https://example.com$request_uri? permanent;
}
server {
    listen 443 ssl http2 default_server;
    listen [::]:443 ssl http2 default_server;
    ssl_certificate /usr/local/nginx/ssl/nginx.crt;
    ssl_certificate_key /usr/local/nginx/ssl/nginx.key;
    server_name example.com;
    root /home/example/public_html;
    index index.php;
    [... all stuff ...]
}

Все остальные сайты

server {
    server_name www.example.com example.com;
    rewrite ^ https://example.com$request_uri? permanent;
}
server {
    listen 443 ssl http2;
    ssl_certificate /usr/local/nginx/ssl/nginx.crt;
    ssl_certificate_key /usr/local/nginx/ssl/nginx.key;
    server_name example.com;
    root /home/example/public_html;
    index index.php;
    [... all stuff ...]
}
Другие вопросы по тегам