如何使用nginx在特定位置路径上提供静态文件目录?

时间:2015-11-29 22:44:37

标签: nginx

我在/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;
  }
}

这不起作用(如果我尝试转到上面的网址,我会得到404),但是如果我尝试使用location / {代替location /something {完全相同的设置,它工作正常。我如何静态地提供这个文件目录,但是在路径而不是在根位置?我是否 将文件放在名为""的文件夹中?像/Users/me/myproject/something这样的工作?如果是这样的话还有办法吗?

2 个答案:

答案 0 :(得分:19)

我在我的VPS上尝试了这一点,并使用alias命令为我工作:

server {
  listen 80;
  server_name   something.nateeagle.com;

  location /something {
    alias /home/neagle/something;
    index index.html index.htm;
  }
}

答案 1 :(得分:0)

我相信你可以使用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 下推送文件,如果你无法逃脱,那么你就是&#39 ;我需要尝试以下类似的位置:

  location ~ /something(.*) {
    root /Users/me/myproject;
    index  index.html;

    try_files /Users/me/myproject$1 /Users/me/myproject$1/ =404
  }