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

Nginx中www域名跳转至主域名失效问题求助

Nginx www域名跳转失效排查方案

1. 先确保配置生效

首先验证配置语法是否正确,避免因语法错误导致配置未加载:

nginx -t

如果提示配置正常,立即重载Nginx:

nginx -s reload

注意你配置里的********占位符(比如uwsgi_pass路径、include的uwsgi_params文件路径)必须是有效路径,否则整个server块可能无法正常加载。

2. 检查默认Server的抢占问题

Nginx会优先匹配带有default_server标记的server块。如果你的服务器上还保留着Nginx默认配置(比如/etc/nginx/sites-enabled/default),里面的server块大概率设置了listen 80 default_server,这会导致www.mydomain.com的请求被默认页server接住,而非你写的跳转规则。

解决思路:

  • 方案一:给你的跳转server块加上default_server标记,强制匹配:
server {
    listen 80 default_server;
    server_name www.mydomain.com;
    return 301 $scheme://mydomain.com$request_uri;
}
  • 方案二:直接禁用默认配置,删除默认配置的软链接:
rm /etc/nginx/sites-enabled/default
nginx -s reload

3. 确认DNS解析一致性

用nslookup或dig检查www子域名的解析IP是否和主域名一致:

nslookup www.mydomain.com
nslookup mydomain.com

如果两者IP不同,说明DNS配置错误,需要修改域名解析的A记录,让www.mydomain.com指向正确的服务器IP。

4. 排查配置加载顺序

Nginx加载sites-enabled目录下的配置时,会按文件名排序匹配。如果你的自定义配置文件名(比如mydomain.conf)在默认配置(default)之后,默认配置的server块会优先匹配请求。

解决方法:要么修改自定义配置文件名让它排在前面(比如00-mydomain.conf),要么直接删除默认配置。

5. 用日志验证请求匹配

在跳转server块里添加访问日志,确认请求是否到达该块:

server {
    listen 80;
    server_name www.mydomain.com;
    access_log /var/log/nginx/www_redirect.log;
    return 301 $scheme://mydomain.com$request_uri;
}

重载Nginx后访问www.mydomain.com,查看日志文件/var/log/nginx/www_redirect.log。如果没有日志记录,说明请求根本没匹配到这个server块,回到前面的步骤重新排查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 22:32:46