Nginx 一个 server{} 块用于将非 www 重定向到 www 以进行 HTTP 和 HTTPS

Nginx 一个 server{} 块用于将非 www 重定向到 www 以进行 HTTP 和 HTTPS

我有一个 Nginx Web 服务器,我需要:

  1. 将所有 HTTP(www 和非 www)重定向到 HTTPS
  2. 将所有非 www 的 HTTPS 重定向到 www

我知道我可以使用不同的 server{} 块,但我想使用“if”语句通过一个服务器块实现这一点,所以这是我实际的 Nginx vhost 配置:

server {
        listen 80;
        listen 443 ssl http2;
        server_name website.com www.website.com;

        if ($scheme = "http") {
            return 301 https://www.website.com$request_uri;
        }

        if ($host = "website.com") {
            return 301 https://www.website.com$request_uri;
        }

        [...]
}

它运行正常,没有问题:

http://website.com     => https://www.website.com
http://www.website.com => https://www.website.com
https://website.com    => https://www.website.com

我的问题是我的配置是否正确。

谢谢!

相关内容