Nginx是否需要索引文件作为根目录?

我正在开发一个Rails应用程序,现在我正在将生产环境设置为默认值。 我创build了这个指令

server { listen 127.0.0.1:80; server_name example.com; root /web/applications/dashboard/public; index index.html; location / { try_files $uri $uri/ @app; } location @app { proxy_set_header host $Host; proxy_redirect off; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://dashboard; } } 

当我试图访问我的应用程序的URL时,这给了我一个403 Forbidden错误。 我没有在public目录中的index.html

如果我添加指令

 location ~ ^/(assets)/ {  gzip_static on; # to serve pre-gzipped version  expires max;  add_header Cache-Control public; } 

并将@app指令更改为/ ,一切正常。

我是否需要在根目录中定义的index.html ? 理想情况下,我不希望发生这种情况,直接进入应用程序。

编辑:这是从error.log相关的条目:

 2013/11/29 07:38:08 [error] 30796#0: *1570 directory index of "/web/applications/dashboard/public/" is forbidden, client: '', server: example.com, request: "GET / HTTP/1.1", host: "example.com" 

该文件夹的权限是:

 ... drwxr-xr-x 3 joshua joshua 4096 Nov 29 07:15 public ... 

我会从try_files删除$uri/ 。 由于你不会直接提供任何index.html文件,所以不需要它的存在,如果不是根本原因,它就是这个错误的直接原因。 离开你:

 try_files $uri @app; 

哦,并确保你在config/routes.rb设置路由…