こんにちは、これは基本的な質問のはずですが、(考慮事項がある場合は)セルボットの考慮事項についての回答はありません。タイムアウトする代わりに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
}
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;
}