nginx 配置不带 www 的域名重定向到带 www 的域名 ssl 协议

Avatar
不若风吹尘
2024-05-24T16:29:45
359
0

要在 Nginx 中配置不带 www 的域名重定向到带 www 的域名,并且都强制使用 HTTPS,可以在 Nginx 配置文件中设置两个 server 块来实现这一需求。下面是一个示例配置:

# 第一个 server 块:处理不带 www 的 HTTP 流量,并重定向到 HTTPS + www
server {
    listen 80;
    server_name example.com; # 不带 www 的域名

    return 301 https://www.example.com$request_uri; # 重定向到 HTTPS + www
}

# 第二个 server 块:处理不带 www 的 HTTPS 流量,并重定向到带 www
server {
    listen 443 ssl;
    server_name example.com; # 不带 www 的域名

    # SSL 证书配置,这里仅做示例,需要替换为实际路径
    ssl_certificate /path/to/your/cert.crt;
    ssl_certificate_key /path/to/your/key.key;

    # 重定向到带 www 的 HTTPS 版本
    return 301 https://www.example.com$request_uri;
}

# 第三个 server 块:处理带 www 的 HTTPS 流量,提供服务
server {
    listen 443 ssl;
    server_name www.example.com; # 带 www 的域名

    # SSL 证书配置,与上面相同
    ssl_certificate /path/to/your/cert.crt;
    ssl_certificate_key /path/to/your/key.key;

    # 其他 SSL 和站点配置,如协议版本、密码套件、location 等
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers 'YOUR_CIPHER_SUITE_HERE';

    location / {
        # 根据需要配置反向代理、静态文件服务等
        # ...
    }
}

解释:

  • 首先,两个 listen 80 和 listen 443 的 server 块分别用于处理不带 www 的 HTTP 和 HTTPS 流量,并将这些流量重定向到对应的带 www 的 HTTPS 版本。
  • 第三个 server 块专门用于接收带 www 的 HTTPS 请求,并提供服务。在这个块中,你需要配置SSL证书的路径以及可能的其他SSL选项和网站内容服务配置。
  • return 301 指令用于执行永久重定向(HTTP状态码301),这有助于搜索引擎和用户识别站点的首选URL。

请确保替换示例中的 example.com 为你的实际域名,以及证书和私钥的实际路径。配置完成后,记得测试并应用配置变更。

Last Modification : 9/20/2024 4:26:49 AM


In This Document