NGINX Autoindex通用配置实现目录列表与文件正常访问
Nginx 目录索引通用配置方案
你可以通过以下配置实现需求,无需为新增文件夹单独加规则:
server { listen 80; server_name 你的实际域名; root 你的站点根目录绝对路径; # 配置首页文件查找顺序,必须包含index.php index index.html index.htm index.php; location / { charset UTF-8; autoindex on; autoindex_exact_size off; autoindex_format html; autoindex_localtime on; # 核心逻辑:先尝试访问文件,再尝试访问目录,找不到再返回404 try_files $uri $uri/ =404; } # 保留你原有正常的PHP解析配置即可,示例如下(根据你的实际FPM地址调整) location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
配置逻辑说明
- Nginx 接收到目录访问请求时,会先按照
index指令指定的顺序查找首页文件 - 如果找到匹配的首页文件:存在
index.html就直接返回静态内容,存在index.php就交给PHP解析器处理返回渲染后的页面,不会触发目录索引 - 如果没有找到匹配的首页文件:自动开启目录索引展示当前目录下的文件/文件夹列表
- 新增文件夹无需修改配置,自动适配上述规则
之前配置的问题原因
- 首次全局开启
autoindex时PHP文件触发下载,是因为你的index指令没有包含index.php,或者PHP解析规则优先级不足,导致Nginx直接将PHP文件作为静态资源返回 - 仅给根路径配置
autoindex时,子目录没有开启autoindex权限,无首页文件的目录会直接返回403错误 - 单独给每个目录加配置的方案扩展性极差,不适合有动态新增目录的场景
配置修改完成后执行nginx -t检查语法是否正确,确认无误后执行nginx -s reload重载配置即可生效。
内容的提问来源于stack exchange,提问作者Muhammad Fadli Md Khalid
相关产品推荐
相关产品推荐

