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

Certbot续期SSL证书后Nginx出现移动端火狐重定向错误,配置是否有误?

配置存在3个明确错误,是导致重定向异常和访问不稳定的核心原因:

  • 443端口重定向逻辑冲突:第二个监听443的server块同时匹配sozcafe.de和www.sozcafe.de,且规则为返回301到https://$server_name$request_uri,其中$server_name取当前块第一个域名sozcafe.de。当https://sozcafe.de的请求匹配到该块时,会触发无限循环重定向,不同浏览器对重定向次数上限的判定逻辑不同,移动端Firefox校验更严格就会直接抛出重定向错误。
  • SSL证书覆盖范围不匹配:所有443块仅配置了sozcafe.de的证书,如果你需要支持www.sozcafe.de访问,需要确认Certbot续期证书时是否将www.sozcafe.de加入域名列表。如果证书缺少www子域名的主题备用名,会触发证书校验错误,部分浏览器会降级跳过校验,就会出现部分可访问、稳定性差的现象。
  • 80端口逻辑冗余:80端口server块同时配置了if跳转规则和末尾的return 404,属于无效冗余配置,且Nginx官方不推荐在server块使用if做跳转,易出现不可预期的逻辑异常。

修复步骤:

  1. 调整443端口server块配置,拆分根域名和www子域名的匹配逻辑,删除重复的根域名443规则:
# 根域名443服务块,处理实际站点请求
server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name sozcafe.de;     
    
    root /var/www/html;
    index index.php;
    
    ssl_certificate /etc/letsencrypt/live/sozcafe.de/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/sozcafe.de/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
    
    location / {
        try_files $uri $uri/ @rewrite;
    }
    
    location @rewrite {
        rewrite ^/(forum/|chat/|cms/|wcf/|calendar/|filebase/|blog/|gallery/)?([^.]+)$ /$1index.php?$2 last;
    }
    
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;  
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    }
}

# www子域名443跳转块,仅匹配www.sozcafe.de
server {
    listen [::]:443 ssl ipv6only=on;
    listen 443 ssl;
    server_name www.sozcafe.de;
    
    ssl_certificate /etc/letsencrypt/live/sozcafe.de/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/sozcafe.de/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
    
    return 301 https://sozcafe.de$request_uri;
}
  1. 替换80端口配置为无if的简洁跳转规则:
server {
    listen 80;
    listen [::]:80;
    server_name sozcafe.de www.sozcafe.de;
    return 301 https://$host$request_uri;
}
  1. 校验证书覆盖域名,执行以下命令查看当前证书包含的所有域名:
    openssl x509 -in /etc/letsencrypt/live/sozcafe.de/fullchain.pem -text -noout | grep DNS
    如果输出中没有www.sozcafe.de,执行Certbot命令更新证书,同时覆盖根域名和www子域名:
    certbot certonly --nginx -d sozcafe.de -d www.sozcafe.de
  2. 所有修改完成后,先执行nginx -t校验配置语法是否合法,确认返回success后执行systemctl reload nginx重载配置生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 18:54:02