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

Nginx默认匹配规则干扰通配域名跳转的解决方法

解决Nginx重定向规则与默认兜底规则冲突的问题

你的问题根源在于重定向规则只监听了IPv4的80端口,而默认兜底规则同时覆盖了IPv4和IPv6的80端口。当请求通过IPv6链路访问时,Nginx找不到对应IPv6 80端口的匹配server块,就会触发默认规则的[::]:80 default_server,导致重定向失效。

按以下方式调整配置即可让两个规则协同工作:

1. 更新重定向规则,同时支持IPv4和IPv6

把原来的重定向server块修改为同时监听IPv4和IPv6的80端口:

server {
    listen 80;
    listen [::]:80;
    server_name *.example.com example.com;
    return 301 https://example.com$request_uri;
}

2. 保留默认兜底规则

原有的默认规则可以保持不变,它会自动处理所有不匹配example.com及其子域名的请求(包括无Host头、非法域名的请求,以及443端口的非法请求):

server {
    listen          80 default_server;
    listen          [::]:80 default_server;
    listen          443 default_server;
    listen          [::]:443 default_server;
    server_name     _;

    include snippets/snakeoil.conf;

    return          444;
}

额外注意事项

  • 你需要确保已经配置了对应https://example.com的HTTPS server块,否则重定向后的请求会被默认规则拒绝。
  • 修改完配置后,执行nginx -s reload命令重新加载Nginx配置,才能让修改生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 19:10:50