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

Nginx HTTP转HTTPS重定向仅Chrome失效问题求助

解决Chrome中email.mysite.com重定向超时的问题

我帮你梳理下问题根源,看了你的Nginx配置,Chrome里的超时大概率是重定向目标错误+证书不匹配导致的——Chrome对SSL证书的校验比其他浏览器更严格,一旦发现证书覆盖的域名和访问的域名不匹配,会直接拦截请求,表现为超时;而其他浏览器可能只是弹出警告,允许用户继续访问。

核心问题分析

  1. 错误的重定向规则
    你的第二个server块(监听443端口,对应mysite.com和email.mysite.com)里,重定向语句是:

    return 301 https://www.$server_name$request_uri;
    

    这会把email.mysite.com重定向到www.email.mysite.com,但你的SSL证书是针对mysite.com-0001的,大概率不包含www.email.mysite.com这个域名,直接触发Chrome的证书拦截。

  2. 未正确配置email域名的SSL证书
    你配置里注释了email.mysite.com的证书路径,但结尾是privkey.$和fullchain.p$,明显是未完成的语法,即使取消注释也会报错。

修正后的Nginx配置

我调整了配置,把不同域名的重定向和证书配置分开,确保每个域名都有正确的SSL证书和重定向目标:

# HTTP 80端口:统一重定向到HTTPS,区分主域名和email域名
server {
 listen 80;
 server_name mysite.com www.mysite.com email.mysite.com;

 # 对email域名直接跳转到HTTPS本身,不要加www前缀
 if ($server_name = email.mysite.com) {
   return 301 https://$server_name$request_uri;
 }
 # 主域名跳转到www版本
 return 301 https://www.mysite.com$request_uri;
}

# 主域名mysite.com的HTTPS重定向到www版本
server {
 listen 443 ssl http2;
 server_name mysite.com;
 ssl_certificate /etc/letsencrypt/live/mysite.com-0001/fullchain.pem;
 ssl_certificate_key /etc/letsencrypt/live/mysite.com-0001/privkey.pem;

 return 301 https://www.mysite.com$request_uri;
}

# email.mysite.com的HTTPS配置(关键)
server {
 listen 443 ssl http2;
 server_name email.mysite.com;

 # 确保这里使用的是email.mysite.com的有效SSL证书
 # 如果没有单独证书,建议申请包含该域名的SAN多域名证书
 ssl_certificate /etc/letsencrypt/live/email.mysite.com/fullchain.pem;
 ssl_certificate_key /etc/letsencrypt/live/email.mysite.com/privkey.pem;

 # 根据你的实际邮件服务配置调整location,比如代理到邮件服务端口
 location / {
   # 示例:如果是Webmail服务,替换成对应的proxy_pass地址
   # proxy_pass http://localhost:8080;
   try_files $uri $uri/ =404;
 }

 # 可选:添加HSTS,确保后续访问强制HTTPS(证书正确后再启用)
 add_header Strict-Transport-Security "max-age=31536000; includeSubdomains" always;
}

# 原www.mysite.com的配置保持不变
server {
 listen 443 ssl http2;
 server_name www.mysite.com;
 include snippets/pagespeed.conf;
 include snippets/optimizations.conf;
 access_log /var/log/nginx/mysite.com.access.log rt_cache;
 error_log /var/log/nginx/mysite.com.error.log;
 root /var/www/html/site/public;
 index index.php index.html index.htm;
 add_header Strict-Transport-Security "max-age=31536000; includeSubdomains";
 ssl_certificate /etc/letsencrypt/live/mysite.com-0001/fullchain.pem;
 ssl_certificate_key /etc/letsencrypt/live/mysite.com-0001/privkey.pem;
 location / {
 try_files $uri $uri/ /index.php$is_args$args;
 }
}

后续验证步骤

  1. 先验证Nginx配置语法是否正确:
    nginx -t
    
  2. 语法无误后重启Nginx:
    systemctl restart nginx
    
  3. 清除Chrome的缓存和HSTS记录(因为Chrome可能缓存了旧的错误状态):
    • 打开Chrome,输入chrome://net-internals/#hsts
    • 在「Delete domain security policies」输入框中填入email.mysite.com,点击「Delete」
    • 同时清除浏览器缓存(Ctrl+Shift+Del),用无痕模式测试访问

这样应该就能解决Chrome里的超时问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:29:47