使用nginx从给定目录的子目录提供静态文件

izkcnapc  于 2023-03-22  发布在  Nginx
关注(0)|答案(2)|浏览(200)

我的服务器上有几组静态.html文件,我想直接使用nginx来服务它们。例如,nginx应该提供以下模式的URI:

www.mysite.com/public/doc/foo/bar.html

使用位于/home/www-data/mysite/public/doc/foo/bar.html.html文件。您可以将foo视为集合名称,并将bar视为此处的文件名。
我想知道下面的nginx配置是否可以完成这项工作:

server {
    listen        8080;
    server_name   www.mysite.com mysite.com;
    error_log     /home/www-data/logs/nginx_www.error.log;
    error_page    404    /404.html;

    location /public/doc/ {
        autoindex         on;
        alias             /home/www-data/mysite/public/doc/;
    }

    location = /404.html {
        alias             /home/www-data/mysite/static/html/404.html;
    }
}

换句话说,所有/public/doc/.../....html模式的请求都将由nginx处理,如果没有找到任何给定的URI,则返回默认的www.mysite.com/404.html

rwqw0loc

rwqw0loc1#

它应该工作,然而http://nginx.org/en/docs/http/ngx_http_core_module.html#alias说:
当location与指令值的最后一部分匹配时:最好使用root指令:
这将产生:

server {
  listen        8080;
  server_name   www.mysite.com mysite.com;
  error_log     /home/www-data/logs/nginx_www.error.log;
  error_page    404    /404.html;

  location /public/doc/ {
    autoindex on;
    root  /home/www-data/mysite;
  } 

  location = /404.html {
    root /home/www-data/mysite/static/html;
  }       
}
dz6r00yl

dz6r00yl2#

你可以使用下面的代码。你也可以使用这个代码来服务vuejs或reactjs静态文件,只要修改alias指向你的文件目录的根;

location /files {
    #autoindex on;
    alias  /files;
    try_files $uri /index.html =404;
  }

确保访问权限也是正确的。sudo chown -R 1000 /files
如何访问文件http://example.com/files/text-file.txt的示例

相关问题