如何仅索引来自我的public /-Nginx特定文件夹的文件?

时间:2019-04-11 18:47:45

标签: php laravel nginx

我在/ home / forge / laravel58 / public / files中放置了2个txt文件; 我想在进入site/files

时为这2个txt文件建立索引

我尝试过

location /files {
    #auth_basic "Restricted";
    #auth_basic_user_file /home/forge/laravel58/.htpasswd;
    alias /home/forge/laravel58/public/files;
    autoindex on;
}

转到:site/files,然后查看

  

403禁止的Nginx

4 个答案:

答案 0 :(得分:6)

后退斜杠对于autoindex来说是必不可少的,它应该是:

location /files/ {
  alias /home/forge/laravel58/public/files/;
  autoindex on;
}

接下来,检查nginx是否对路径中的每个文件夹具有执行权限(+x

之后,从该文件夹中删除所有索引文件,默认情况下为index.html

最后,检查您的location /指令是否尝试尝试目录:

location / {
  ...
  try_files $uri $uri/ ...;
                 ^^^^^
}

答案 1 :(得分:3)

  1. 关于尾部斜杠是“ autoindex的基本要素”的另一个答案是100%不正确:尽管实际上不是首选,但此处不需要尾部斜杠,因为否则您可以访问常规文件和目录,例如/filesSECRET,从/files/到更高级别,这样就可以解决潜在的安全问题。

  2. 在您的情况下,/fileslocation以及alias的后缀,最好使用root而不是{ {1}}。参见http://nginx.org/r/aliashttp://nginx.org/r/root

  3. 为使http://nginx.org/r/autoindex工作,运行nginx进程的UNIX用户必须对路径的最终目录具有“读取”许可权,并且对每个目录都具有“执行”许可权路径的一部分。

    您可以使用stat(1)alias来检查权限,并使用chmod(1)来更改权限。您可能希望在ls -l上使用o+rx,并在导致上述目录的每个目录中使用/home/forge/laravel58/public/files

答案 2 :(得分:1)

为什么要使用nginx,可以使用符号链接

用法:ln -s /path/to/file /path/to/symlink

ln -s /home/forge/laravel58/public/files site/files(具有完整路径)

答案 3 :(得分:1)

server {
    listen 80;
    listen 443 ssl;
    server_name www.old-name.com;
    return 301 $scheme://www.new-name.com$request_uri;
}

SOURCE