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

Webdock.io服务器Nginx配置:将www域名重定向至非www域名的问题求助

Webdock.io服务器Nginx配置:将www域名重定向至非www域名的问题求助

嗨,我看了你的问题和现有配置,问题的核心在于主server块的server_name同时包含了非www和www域名,导致Nginx会优先把www的HTTPS请求匹配到主server块,而不是你新加的专门处理www重定向的server块,所以你的重定向规则根本没被触发。

下面给你一套清晰的修复方案,保证能解决这个问题:

步骤1:调整主server块的域名范围

把主server块里的server_name改成只保留非www域名,让它只处理https://my-clients-domain.com的请求:

server_name my-clients-domain.com;

步骤2:将www重定向server块放在主server块之前

把你之前写的www重定向server块移到主server块的前面(Nginx按配置文件顺序匹配server块,提前放置能避免匹配优先级混乱),内容保持不变:

server {
    listen [::]:443 ssl ipv6only=on;
    listen 443 ssl;
    server_name www.my-clients-domain.com;
    return 301 https://my-clients-domain.com$request_uri;

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

步骤3:优化HTTP端口的重定向(可选但推荐)

原来Certbot生成的80端口server块会把HTTP请求转到对应域名的HTTPS(比如HTTP的www转到HTTPS的www),你可以改成直接跳转到HTTPS的非www域名,减少一次重定向,提升用户体验:

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name my-clients-domain.com www.my-clients-domain.com;
    
    # 直接将所有HTTP请求重定向到HTTPS非www域名
    return 301 https://my-clients-domain.com$request_uri;
}

最后验证并重启Nginx

修改完配置后,先检查配置语法是否正确:

nginx -t

如果输出test is successful,就可以重启Nginx让配置生效:

systemctl restart nginx

这样修改后,不管用户访问http://www.my-clients-domain.com还是https://www.my-clients-domain.com,都会被正确重定向到https://my-clients-domain.com,而且不会和现有配置产生冲突。核心逻辑就是让每个server块只负责对应域名的请求,避免Nginx出现匹配混乱的情况~

备注:内容来源于stack exchange,提问作者skribe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 08:33:11