nginx在https下处理404的核心是tls建立后精准识别资源缺失并返回友好响应,需正确配置error_page、try_files、location匹配及proxy_intercept_errors,确保静态页、spa fallback与api json错误响应各司其职。

Nginx 在 HTTPS 环境下处理 404 错误,核心不是“换协议”,而是确保 TLS 已建立的前提下,精准识别资源缺失并给出友好响应。关键在于配置要兼顾安全性、路径匹配逻辑与用户感知。
明确 HTTPS 404 的本质
它不是证书或端口问题(那些会报 SSL_ERROR 或连接失败),而是:客户端已成功握手、发送了 HTTPS 请求,但 Nginx 按照当前配置找不到对应资源。所以排查和优化都围绕“路径解析”与“响应策略”展开。
配置自定义 404 页面(保持状态码)
适用于大多数网站,用户看到友好提示,URL 不变,搜索引擎仍识别为 404。
- 把
404.html放在站点根目录(如/usr/share/nginx/html/404.html)或指定静态路径下 - 在
server { ... }块中添加:
```nginx
error_page 404 /404.html;
location = /404.html {
root /usr/share/nginx/html;
internal; # 防止用户直接访问该页面
}```nginx
location / {
try_files $uri $uri/ /index.html;
}```nginx
location ^~ /api/ {
proxy_pass https://www.php.cn/link/65b5b8d1f89bf53a5713bc3afdd83e9e;
proxy_intercept_errors on;
error_page 404 =404 /api-404.json;
}
location / {
try_files $uri $uri/ /index.html;
error_page 404 /404.html;
}
location = /api-404.json {
internal;
root /usr/share/nginx/errors;
add_header Content-Type application/json;
}
location = /404.html {
internal;
root /usr/share/nginx/errors;
}











