我正在开发一个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设置路由…