如果将 http 重定向到 https nginx,我们是否需要在第二个服务器块中使用 server_name

Do we need to use server_name in a 2nd server block if redirecting http to https nginx

如果我将所有 http 流量重定向到 https,我们是否应该在 443 块上使用 server_name

server {
        listen 80;
        listen [::]:80;
        server_name domain.com;
        return 301 https://$server_name$request_uri;
}

server {
        listen 443 ssl;
        listen [::]:443 ssl;

        server_name domain.com; #do we need this?

        ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem;

        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;

我可以省略在 443 端口下的第二个服务器块中写入 server_name 吗?

是的,您需要这个,因为您可以拥有(或稍后添加)另一个侦听 443 的服务器块。然后您需要告诉 nginx 哪个服务器块应该为哪个域的请求提供服务。