web-dev-qa-db-ja.com

nginx https wwwは、certbotを暗号化して、www以外にリダイレクトします

こんにちは、これは基本的な質問のはずですが、(考慮事項がある場合は)セルボットの考慮事項についての回答はありません。タイムアウトする代わりにhttps wwwを非wwwにリダイレクトするにはどうすればよいですか?

https www私のサイトのバージョンは非wwwにリダイレクトする代わりにタイムアウトしますが、他のすべてのバージョン(httpおよびhttps非www)は正常に動作します。

Certbotを使用して証明書を更新でき、後でnginx構成を手動で変更する必要がないように、将来の証明を希望します。

Nginxサーバーの設定を以下に示します。

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;
    server_name www.mydomain.com mydomain.com;

    listen 443 ssl; # managed by Certbot
    ssl_certificate <path_to_cert> # managed by Certbot
    ssl_certificate_key <path_to_key>; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam <path_to_this>

    if ($scheme != "https") {
        return 301 https://$Host$request_uri;
    } # managed by Certbot
}
3
duncangarde

Http/sおよびwww/non-wwwの4つのバリエーションのそれぞれに個別のサーバーブロックを使用します。別の方法で実行できる場合は、「if」ステートメントを使用しないでください- Nginx If is Evil

# http server, static websites        
server {            
  server_name example.com;            

  listen 443 ssl http2;            

  ssl_certificate /var/lib/acme/certs/***CERT_DIRECTORY/fullchain;            
  ssl_certificate_key /var/lib/acme/certs/***CERT_DIRECTORY/privkey;            

  root     /var/www/***rootdir;            
}            

# This server simply redirects the requested to the https version of the page            
server {            
  listen 80;            
  server_name www.example.com example.com;            

  # Let's Encrypt certificates with Acmetool            
  location /.well-known/acme-challenge/ {            
    alias /var/www/.well-known/acme-challenge/;            
  }            

  location / {            
    return 301 https://example.com$request_uri;            
  }            
}            

server {            
  listen 443 ssl http2;            
  server_name www.example.com;            

  ssl_certificate /var/lib/acme/certs/***CERT_DIRECTORY/fullchain;            
  ssl_certificate_key /var/lib/acme/certs/***CERT_DIRECTORY/privkey;            

  return 301 https://example.com$request_uri;            
}            
2
Tim