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

Nginx无法实现www与非www域名跳转 访问www域名显示默认欢迎页求助

问题根源

  • 配置冲突:第一个443端口server块同时绑定了mywebsite.net和www.mywebsite.net,Nginx按配置顺序优先匹配先定义的server,你后续单独写的www跳转server块永远不会被命中
  • 缺失80端口处理规则:你所有配置都只覆盖了443 HTTPS端口,访问HTTP协议(http://开头)的域名时会命中Nginx默认的80端口server,返回默认欢迎页,也不会触发跳转

修复方案

1. 调整443端口配置顺序与匹配规则

把www域名的跳转server块放在主站server块前面,主站server块仅绑定非www域名,避免匹配冲突。

2. 新增80端口统一跳转规则

捕获所有HTTP请求,统一跳转到HTTPS协议的非www域名,同时完成协议升级与域名跳转。

修复后完整配置

# 80端口统一跳转:所有HTTP请求直接跳HTTPS非www域名
server {
    listen 80;
    listen [::]:80;
    server_name mywebsite.net www.mywebsite.net;
    return 301 https://mywebsite.net$request_uri;
}

# 443端口www跳转:HTTPS的www域名直接跳非www
server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name www.mywebsite.net;
    
    ssl_certificate /etc/letsencrypt/live/mywebsite.net/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/mywebsite.net/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
    
    return 301 https://mywebsite.net$request_uri;
}

# 443端口主站配置:仅绑定非www域名
server {
    listen [::]:443 ssl ipv6only=on;
    listen 443 ssl;
    server_name mywebsite.net;
    
    root /home/myuser/mywebsite/client/build;
    index index.html index.htm index.nginx-debian.html;
    
    ssl_certificate /etc/letsencrypt/live/mywebsite.net/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/mywebsite.net/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    location /api  {
        proxy_pass    https://localhost:3001/api;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }

    location / {
        try_files $uri $uri/ /index.html;
    }
}

生效操作

配置修改完成后执行以下命令验证配置合法性,再重载Nginx即可:

# 验证配置是否正确
nginx -t
# 重载Nginx使配置生效
systemctl reload nginx

补充说明

你之前curl返回的612字节响应就是Nginx默认欢迎页的标准大小,说明请求命中了默认server块,修复后curlhttp://www.mywebsite.net和https://www.mywebsite.net都会返回301跳转响应,跳转到https://mywebsite.net对应的站点资源。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:36:06