当前位置: 首页 > news >正文

粗心大意必酿大祸,记录nginx配置文件的一次闹剧

一次域名配置引发的 Nginx 配置问题:HTTPS 与 server_name 的踩坑记录

在最近的项目维护中,我新增了一个域名 bugfix.wiki,计划将其解析到现有的网站上,与之前使用的 bugshare.cn 一样,通过 Nginx 实现完整的 HTTP/HTTPS 跳转逻辑。

域名备案、DNS、SSL 证书均已配置完毕,本以为只需复制一份现有配置即可。结果上线后却发现:bugfix.wiki 无法正常访问,而 bugshare.cn 却完全正常

问题的根源最终被定位在一个非常细微但关键的 Nginx 配置点上。这里记录整个过程,供日后参考,也供遇到相同问题的同学排查。


1. 预期目标

对两个域名(bugshare.cnbugfix.wiki)都希望实现如下行为:

输入 URL 预期跳转
http://domain https://www.domain
http://www.domain https://www.domain
https://domain https://www.domain
https://www.domain 内容正常访问

即:

  • 全站 HTTPS
  • 全站强制“带 WWW”
  • 所有 HTTP 统一跳转到 HTTPS

2. 初始配置(bugshare.cn)——正常工作

bugshare.cn 的配置如下,可以正常运行:

server {listen 80;listen [::]:80;server_name bugshare.cn www.bugshare.cn;return 301 https://www.bugshare.cn$request_uri;
}server {listen 443 ssl;server_name bugshare.cn;ssl_certificate     /etc/nginx/conf.d/cert/bugshare.cn.pem;ssl_certificate_key /etc/nginx/conf.d/cert/bugshare.cn.key;if ($host = 'bugshare.cn') {return 301 https://www.bugshare.cn$request_uri;}location / {root /usr/local/nginx/html/dist;if ($uri = '/index.html') {add_header Cache-Control "no-cache, no-store, must-revalidate";}try_files $uri $uri/ /index.html;}
}

注意:该配置虽然也存在优化空间,但在实际场景中运行完全正常。


3. 为 bugfix.wiki 复制一份配置后 —— 访问异常

为新域名复制后:

server {listen 80;listen [::]:80;server_name bugfix.wiki www.bugfix.wiki;return 301 https://www.bugfix.wiki$request_uri;
}server {listen 443 ssl;server_name bugfix.wiki;   # ← 问题所在ssl_certificate     /etc/nginx/conf.d/cert/bugfix.wiki.pem;ssl_certificate_key /etc/nginx/conf.d/cert/bugfix.wiki.key;if ($host = 'bugfix.wiki') {return 301 https://www.bugfix.wiki$request_uri;}location / {root /usr/local/nginx/html/dist;if ($uri = '/index.html') {add_header Cache-Control "no-cache, no-store, must-revalidate";}try_files $uri $uri/ /index.html;}
}

访问现象:

  • http://bugfix.wiki → 正常跳到 https://www.bugfix.wiki
  • https://bugfix.wiki → 正常跳到 https://www.bugfix.wiki
  • https://www.bugfix.wiki → 报错「该网页无法正常运作」

表面上跳转逻辑没问题,但最终 HTTPS 访问失败。


4. 问题定位:未将 www.bugfix.wiki 写入 HTTPS server_name

导致报错的关键配置问题:

server_name bugfix.wiki;

缺少了:

www.bugfix.wiki

为什么这是致命错误?

Nginx 在处理 HTTPS 时,会根据 SNI(Server Name Indication) 判断应该使用哪个 server 块及对应的 SSL 证书。

当访问 https://www.bugfix.wiki 时:

  • 浏览器会发送 TLS ClientHello,附带 SNI:www.bugfix.wiki
  • Nginx 根据 server_name 匹配 server 块
  • 此时配置中没有匹配 www.bugfix.wiki 的 443 server
  • Nginx fallback 到默认的 443 server(通常是第一个匹配到的)
  • 返回了不匹配的 SSL 证书 → 浏览器报错

现象表现为“网页无法正常运作”,实际是 SSL 证书不匹配导致连接被拒绝。


5. 修复后的正确配置

server {listen 443 ssl;server_name bugfix.wiki www.bugfix.wiki;ssl_certificate     /etc/nginx/conf.d/cert/bugfix.wiki.pem;ssl_certificate_key /etc/nginx/conf.d/cert/bugfix.wiki.key;if ($host = 'bugfix.wiki') {return 301 https://www.bugfix.wiki$request_uri;}location / {root /usr/local/nginx/html/dist;if ($uri = '/index.html') {add_header Cache-Control "no-cache, no-store, must-revalidate";}try_files $uri $uri/ /index.html;}
}

重启 Nginx:

nginx -s reload

问题即刻解决,所有访问路径完全正常。


6. 技术总结(关键要点)

✔ 1. server_name 必须覆盖 HTTPS 下的所有访问域名

尤其是:

  • 主域名(Apex domain)
  • 带 www
  • 子域名(如有)

否则 SNI 匹配失败,证书无法正确绑定。


✔ 2. Nginx 的域名匹配与“回源域名”无关

即使使用了 Cloudflare 等代理平台,只要请求最终到达 Nginx,SNI 匹配仍完全依赖 Nginx 的 server_name


✔ 3. HTTPS 的 server 块一定比 HTTP 更严格

HTTP 没有 SNI,匹配宽松得多;
HTTPS 要求精确匹配 server_name,否则证书直接错乱。


✔ 4. 强烈建议使用统一跳转逻辑的最佳实践:

server_name bugfix.wiki www.bugfix.wiki;

避免遗漏。

甚至可以进一步做:

server_name .bugfix.wiki;

但需要根据实际情况决定。


7. 后记

整个问题看似隐蔽,其实本质是:

HTTPS server_name 少写了一个域名,导致 SNI 匹配失败。

属于 Nginx 配置中非常常见但又不容易第一时间想到的坑。

像这种“复制配置”场景,非常容易疏忽,提醒自己与大家:

复制配置永远不能无脑复制,尤其是 SSL 相关的 server 块。检查、检查、再检查。

http://www.jsqmd.com/news/60726/

相关文章:

  • 编程语言的“奇点”融合(下):AI羽翼与人机共生
  • 密码学框架的核心防护:FUZZ测试(模糊测试)技术原理与行业实践
  • 南京留学机构排行榜TOP10大洗牌:谁是2025真王者?
  • Oracle VM VirtualBox在启动ubuntu系统失败
  • 2025年电动行走滚轮架供货厂家权威推荐榜单:液压组队滚轮架‌/丝杆可调式滚轮架‌/可调式滚轮架‌源头厂家精选
  • 2025年五大靠谱存包柜厂家推荐,智能存包柜专业解析与企业实
  • 2025年3000℃石墨化炉与气氛保护石墨化炉TOP5权威推
  • 2025年曲线封边机厂家推荐:五大靠谱封边机制造商实力解析
  • 2025年深圳五大品质家装公司排行榜,名雕装饰经验丰富
  • pbootcms百度编辑器UEDITOR给超链接默认添加rel="nofollow"标签
  • Anthropic冲击3000亿估值、Meta加速硬件布局、可灵AI音画同出创新上线!
  • 2025年国内知名的GEO优化品牌哪家好,GEO优化AI搜索/广告全案策划、制作、发布/GEO优化服务/会展服务GEO优化源头厂家怎么选择
  • 2025年中国十大无缝封边机厂家推荐:封边机供应商哪家好?
  • 2025年深圳家装公司口碑排行榜,名雕装饰市场竞争力强
  • 实用指南:5种精美CSS3悬停按钮动画特效实战演示
  • 深入解析:Linux 基础开发工具入门:软件包管理器的全方位实操指南
  • 用隐式马尔科夫模型分类URI和检测XSS的流程
  • 社区用户分享:用 NocoBase 搭建可落地的 ERP
  • 2025年线材立式注塑机厂家权威推荐榜单:圆盘立式注塑机/电动射出立式注塑机/混合双色立式注塑机源头厂家精选
  • 忆青春
  • 2025年靠谱的混合机厂商五大排行榜,混合机定制厂家测评推荐
  • 2025上海维修电梯培训报考机构TOP5权威推荐:正规维修电
  • 2025年纺织工业停经架实力供应商排行榜,停经架来图定制优质
  • 2025年天坛装修:国企全产业链布局下的市场竞争力深度分析报告
  • 南京留学中介别乱选!真・王者对决,选对少走弯路
  • 2025年天坛装饰:全链路服务体系深度解析与行业标杆价值揭秘
  • 2025年天坛装饰:从国企基因到全产业链布局的家装市场格局解析
  • 2025年天坛装修:国企全产业链模式深度解析与行业竞争力盘点
  • 厨房秤方案开发公司推荐“西城微科”
  • [HDU 1176] 免费馅饼