Nginx如何提供一个位置及其子目录下的所有文件

Posted

技术标签:

【中文标题】Nginx如何提供一个位置及其子目录下的所有文件【英文标题】:Nginx how to serve all file under a location and its sub directories 【发布时间】:2017-09-13 05:25:03 【问题描述】:

我成功地将 Rails 5.1 应用程序部署到 EBS,而不是在 public 目录中生成包文件。不知何故,我认为nginx 需要配置为允许访问这些资源。目前该应用程序能够访问同样位于那里的404 页面。

如何允许nginx 访问public/packs 文件夹下的所有内容。这是我使用的似乎不起作用的规则:

location /packs 
  root /var/app/current/public/packs;

有什么帮助吗?

【问题讨论】:

【参考方案1】:

如果您尝试显示站点目录中的文件(没有列出文档的 html 页面),您可以为该目录启用 nginx 自动索引。

http://nginx.org/en/docs/http/ngx_http_autoindex_module.html

# Allow browser to see files in directory
# Exact request URI matching
location = /var/www/path/ 
    autoindex on;

【讨论】:

【参考方案2】:

如果您已成功部署您的 rails 应用程序并且它正在运行,那么我认为没有必要提供对公用文件夹内容的访问权限。

它们默认由服务器提供服务。 如果您在www.example.com 访问您的网站,nginx 和乘客根为/var/app/current/public 您可以通过以下方式访问公用文件夹中的文件:

www.example.com/file_in_public_folder.ext

www.example.com/packs/any_path_to_file.ext 

【讨论】:

是的,它只提供public/assets 下的文件,而不是新的`public/packs` 目录

以上是关于Nginx如何提供一个位置及其子目录下的所有文件的主要内容,如果未能解决你的问题,请参考以下文章

列出/etc目录下的所有文件命令

如何用perl查找某目录下 及其子目录下的某类文件

请问:如何批处理删除文件夹及其所有子文件夹下N天前所有文件?

如何设置NGINX以根据位置(在相同的server_name下)部署不同的单页应用程序(SPA的...即静态文件)和子路由

Win 7 如何批量提取指定文件夹下的所有文件名称及其路径?

PHP删除当前目录及其目录下的所有文件