You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 12:57:30