【发布时间】:2015-03-01 15:03:57
【问题描述】:
我刚刚设置了我的应用程序并使用 Capistrano 将其部署到 /srv/my_app_name。但是,当我尝试访问我的应用程序时,我收到 403 Forbidden nginx/1.6.2 错误。我的 Nginx 在www-data 用户下运行,但现在我试图了解应该为我的应用程序文件夹授予 Nginx 哪些访问权限。在我的/var/log/nginx/error.log 文件中,我有这个:
015/03/01 09:42:16 [error] 19451#0: *1 directory index of "/srv/my_app_name/current/public" is forbidden, client ...
这是/srv 文件夹的ls -l 命令的结果:
drwxrwxr-x 3 root deploy 4096 Feb 28 16:04 srv
namei -lm /srv/my_app_name/current/public/ 命令的转义:
# namei -lm /srv/my_app_name/current/public/
f: /srv/my_app_name/current/public/
drwxr-xr-x root root /
drwxrwxr-x root deploy srv
drwxrwxr-x deploy deploy my_app_name
lrwxrwxrwx deploy deploy current -> /srv/my_app_name/releases/20150301140926
drwxr-xr-x root root /
drwxrwxr-x root deploy srv
drwxrwxr-x deploy deploy my_app_name
drwxrwxr-x deploy deploy releases
drwxrwxr-x deploy deploy 20150301140926
drwxrwxr-x deploy deploy public
我的应用 Nginx 配置:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
passenger_enabled on;
rails_env production;
# root /srv/my_app_name/;
root /srv/my_app_name/current/public;
# Make site accessible from http://localhost/
server_name localhost staging.my_app_name.de www.staging.my_app_name.de;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
# Uncomment to enable naxsi on this location
# include /etc/nginx/naxsi.rules
}
}
我以前的应用程序部署到/var/www 并且运行良好,但我读到它不是将应用程序用作服务的最佳位置,因此决定将这个应用程序放在更合适的文件夹中,但现在我'我被文件权限卡住了。
问题:
我应该将
www-data的一些权限添加到公用文件夹(/srv/my_app_name/current/public)还是整个应用程序文件夹(/srv/my_app_name)?什么是适当的权利?我目前使用
deploy用户进行部署,该用户已添加到deploy组中。如何添加这些权限(我的意思是命令,因为我在Linux文件权限方面不是很好)?
【问题讨论】:
-
能否提供
namei -lm /srv/my_app_name/shared/public命令的输出? -
+ 使用应该使用
/srv/my_app_name/current/public而不是/srv/my_app_name/shared/public -
已将
namei -lm结果添加到问题中。 -
@maxd 是的,我已经更改了配置并重新启动了 nginx,但结果是一样的
-
似乎您拥有所有目录的所有
o+r权限。这是否意味着您的问题与目录权限无关。看看这个post。也许你有这篇文章中描述的问题。
标签: ruby-on-rails linux nginx deployment permissions