Nginx配置问题:站点可显示根目录文件但无法展示子目录
解决Nginx无法展示子目录内容的问题
嘿,我来帮你搞定这个子目录访问不了的问题。先看你贴的Nginx配置,核心问题在于当你访问子目录时,Nginx默认不会自动列出目录里的文件,加上当前配置里的try_files规则,就直接返回404了。咱们一步步来调整:
1. 启用目录自动索引功能
要让Nginx展示子目录内容,你需要在location /块里添加autoindex on;指令,还可以搭配几个可选参数让显示更友好:
autoindex_exact_size off;:用更易读的单位(比如KB/MB)显示文件大小,而不是字节数autoindex_localtime on;:显示文件的本地修改时间,而不是GMT时间
2. 清理重复配置
注意到你在server块和location /块里都写了root指令,其实server级别的root已经生效了,location /里的重复定义可以删掉,避免潜在的配置冲突。
修改后的完整配置
server { listen 80; listen [::]:80; # Add index.php to the list if you are using PHP index index.html index.htm; server_name www.tommiejones.com tommiejones.com; root /var/www/html/tommiejones; location ~/api/(.*)$ { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header Host $host; proxy_pass http://127.0.0.1:8000/api/$1; } location / { try_files $uri $uri/ =404; # 启用目录索引 autoindex on; autoindex_exact_size off; autoindex_localtime on; } }
最后两步验证
- 保存配置后,重启Nginx让修改生效:
sudo systemctl restart nginx - 检查目录权限:确保Nginx运行的用户(通常是
www-data)有读取子目录的权限:sudo chown -R www-data:www-data /var/www/html/tommiejones sudo chmod -R 755 /var/www/html/tommiejones
这样调整后,你再访问子目录应该就能看到里面的文件列表了。
内容的提问来源于stack exchange,提问作者Tommie Jones
相关产品推荐
相关产品推荐

