【问题标题】:How to serve a directory of static files at a certain location path with nginx?如何使用 nginx 在某个位置路径提供静态文件目录?
【发布时间】:2016-03-03 12:36:54
【问题描述】:

我在/Users/me/myproject 有文件,我想使用简单的 nginx 配置在http://stuff.dev/something 为它们提供服务。在/Users/me/myproject 文件夹中是这样的:

index.html
scripts/
    app.js
styles/
    style.css

所以我真的希望能够访问http://stuff.dev/somethinghttp://stuff.dev/something/scripts/app.js 等。

在我的 nginx conf 我有这个:

server {
  listen      80;
  server_name stuff.dev;

  location /something {
    index  index.html;
    root /Users/me/myproject;
  }
}

这不起作用(如果我尝试转到上述 URL,我会得到 404),但是如果我尝试完全相同的设置但使用location / { 而不是location /something {,它可以正常工作。如何静态提供此文件目录但在路径而不是位置根目录?我是否必须将文件放在名为“某物”的文件夹中,例如/Users/me/myproject/something 才能正常工作?如果是这样,有没有办法解决这个问题?

【问题讨论】:

    标签: nginx


    【解决方案1】:

    我在我的 VPS 上尝试过,使用 alias 命令对我有用:

    server {
      listen 80;
      server_name   something.nateeagle.com;
    
      location /something {
        alias /home/neagle/something;
        index index.html index.htm;
      }
    }
    

    【讨论】:

    • 做到了!仍然很困惑为什么root 在这里的工作方式不同,但这就是我需要的。谢谢内特!
    • 不完全确定,我只是通过文档:nginx.org/en/docs/http/ngx_http_core_module.html#root“文件的路径是通过仅将 URI 添加到根指令的值来构造的。如果必须修改 URI ,应使用别名指令。”很高兴这有帮助!
    • 嗯,现在想想,这确实是有道理的。谢谢!
    • 正是我想要的!
    【解决方案2】:

    我相信您可以使用 try_files 指令来完成此操作,这样的事情应该可以工作:

    server {
      listen      80;
      server_name stuff.dev;
    
      location /something {
        root /Users/me/myproject;
        index  index.html;
    
        try_files /Users/me/myproject/$uri /Users/me/myproject/$uri/ =404
      }
    }
    

    可能需要您将文件推送到 /Users/me/myproject/something 下,如果您无法做到这一点,则需要尝试类似以下的位置:

      location ~ /something(.*) {
        root /Users/me/myproject;
        index  index.html;
    
        try_files /Users/me/myproject$1 /Users/me/myproject$1/ =404
      }
    

    【讨论】:

    • 有趣...我会在一分钟内尝试这个,好奇如果您必须提及整个路径,那么“root”的意义是什么...我假设 try_files 将相对于范围根值...
    • 再看这个,可能是openresty + os x el capitan 的问题以及它是如何设置的。 :(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-27
    • 2016-11-07
    • 2019-08-04
    • 2014-01-26
    • 2014-01-12
    • 1970-01-01
    相关资源
    最近更新 更多