Nginx原生指令可构建轻量可靠静态资源安全策略:默认拒绝非法路径与方法,关闭目录浏览、屏蔽隐藏文件和危险后缀,限制HTTP方法为GET/HEAD,隔离路径并禁用符号链接,添加安全响应头及合理缓存。

直接用 Nginx 原生指令就能构建可靠、轻量的静态资源访问安全策略,不需要额外模块或复杂插件。核心是遵循“默认拒绝”原则:先拦住所有非法路径和方法,再精准放行可信请求,最后加固响应与缓存。
关闭目录浏览与屏蔽隐藏文件
这是最基础也最容易被忽略的一环。默认开启 autoindex 时,访问 /images/ 这类无首页的目录会直接列出全部文件名,可能暴露 .git、.env 或备份文件。
- 在对应
location块中加:autoindex off; - 添加正则规则拦截以点开头的路径:
location ~ /\. { deny all; },可立即阻断/.git/config、/.htaccess等敏感访问 - 对常见危险后缀也可补充拦截:
location ~ \.(git|log|bak|swp|orig)$ { return 404; }
限制 HTTP 方法并按类型精准控制
静态资源只应响应 GET 和 HEAD 请求。其他方法(如 POST、PUT、DELETE)不仅无意义,还常被扫描器利用。
- 推荐使用
limit_except(比if更安全高效):limit_except GET HEAD { deny all; } - 该规则应放在具体静态资源
location中,例如:location ~* \.(js|css|png|woff2|svg|jpg|gif)$,避免误伤 API 或动态接口
隔离路径与禁用符号链接
防止因 root/alias 配置不当导致路径穿越或越权读取服务器任意位置。
- 对下载类、上传类等敏感静态路径,优先用
alias替代root,并启用disable_symlinks on; - 示例:
location /downloads/ { alias /data/public/; disable_symlinks on; } - 确保目标目录权限严格(如属主
www-data,不开放写权限),从系统层补上缺口
添加安全响应头与合理缓存策略
虽不直接拦截请求,但能大幅降低 XSS、MIME 混淆、点击劫持等风险,并减少无效重请求带来的服务压力。
- 全局或
location块中设置:add_header X-Content-Type-Options "nosniff"; -
add_header X-Frame-Options "DENY";防止页面被嵌入 iframe - 搭配严格 CSP:
add_header Content-Security-Policy "default-src 'none'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self'; connect-src 'self'; base-uri 'self'; form-action 'self';" always; - 对长期不变资源(如 JS/CSS/字体),建议:
expires 1y;+add_header Cache-Control "public, immutable";


















