You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx配置实现非www链接重定向到带www的HTTPS站点问题求助

配置错误原因

  1. 监听443端口的业务server块同时绑定了example.com和www.example.com,用户访问https://example.com时会直接进入该块处理,不会触发任何跳转规则
  2. 80端口的原有重定向规则仅完成了HTTP转HTTPS,没有将非www域名跳转为带www的域名
  3. 后续新增的default_server规则和同端口下明确配置了server_name的块冲突,Nginx匹配请求时会优先走server_name完全匹配的块,default_server的规则不会生效

正确完整配置

替换你的/etc/nginx/sites-available/example.com全部内容为以下配置:

# 处理所有非www的HTTPS请求跳转
server {
    listen [::]:443 ssl ipv6only=on;
    listen 443 ssl;
    server_name example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

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

# 带www的HTTPS业务站点配置
server {
    listen [::]:443 ssl ipv6only=on;
    listen 443 ssl;
    server_name www.example.com;

    root /var/www/example.com;
    index index.html index.htm index.nginx-debian.html;

    location / {
        try_files $uri $uri/ =404;
    }

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}

# 所有HTTP请求统一跳转对应HTTPS站点
server {
    listen 80;
    listen [::]:80;
    server_name example.com www.example.com;

    return 301 https://$host$request_uri;
}

生效操作步骤

  1. 执行nginx -t测试配置是否合法,确认返回test is successful再执行下一步
  2. 执行systemctl reload nginx重载Nginx配置
  3. 测试前清空浏览器缓存,301永久重定向会被浏览器默认缓存,避免旧缓存影响测试结果

内容的提问来源于stack exchange,提问作者user8758206

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 08:54:04