Nginx 配置安全加固后网站打不开怎么办?
我按照网上教程给 Nginx 做了安全加固,加了一些 header 和限制,结果一 reload 服务,前端页面就完全打不开了,浏览器报 502 或空白。我只改了 server 块里的配置,没动其他地方。
比如加了这些:
add_header X-Content-Type-Options nosniff;
add_header X-Frame-Options DENY;
add_header Content-Security-Policy "default-src 'self';";
是不是 CSP 策略太严格把静态资源拦了?但控制台也没看到具体报错,有点懵,该怎么排查?
先别慌,按这个顺序排查:
1. 临时先把CSP那行注释掉,reload看页面能不能恢复,确认是不是它的问题
2. 打开浏览器开发者工具,看Network面板,应该能看到被拦截的资源(虽然你说是空白,但可能有隐藏的报错)
3. 如果确认是CSP问题,可以先用这个宽松点的策略测试:
几个注意点:
- 加了unsafe-inline和unsafe-eval是为了兼容老式前端框架(虽然不太安全但能临时解决问题)
- 记得把yourcdn.com换成你实际用的CDN域名
- 静态资源如果是跨域的,必须显式声明域名
更好的写法是逐步收紧策略:先允许所有来源让页面能跑起来,然后根据浏览器控制台的报错一个个添加白名单。我上次搞这个调了整整两天,咖啡都喝吐了...
另外502可能是其他原因,检查下nginx error log,路径一般是/var/log/nginx/error.log,看有没有语法错误或者权限问题。