Rails,Passenger,Nginx,我得到“403 Forbidden”但为什么?

时间:2016-07-12 16:01:26

标签: ruby-on-rails ruby nginx passenger

我正在尝试通过端口5000上的Passenger-Nginx运行我的应用程序

在我的浏览器上,我得到'403 Forbidden'和我的nginx错误日志:

  

2016/07/12 17:52:12 [错误] 28924#0:* 1目录索引   “/ var / www / cava / public /”是禁止的,客户端:Y.Y.Y.Y,服务器:   cava,请求:“GET / HTTP / 1.1”,主持人:“X.X.X.X:5000”

在乘客根上,我使用从 passenger-config --root 获得的内容,但不使用rvm。 如果我使用rvm加载的乘客根我得到乘客错误,但我在这里做了什么?

参考我的app config和我的nginx.conf:

我的应用配置

server {


    listen 5000;

    listen [::]:5000;

    server_name cava;

    root /var/www/cava/public;
    #try_files $uri/index.html $uri @app;

    # Add index.php to the list if you are using PHP
    #index index.html index.htm index.nginx-debian.html;

    #location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        #try_files $uri $uri/ =404;
    #}
}

我的 nginx.conf

user www-data;
worker_processes 4;
pid /run/nginx.pid;

events {
    worker_connections 768;
    # multi_accept on;
}

http {

    passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
    passenger_ruby /home/tasos/.rvm/rubies/ruby-2.3.0/bin/ruby;


    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;


    ssl_session_cache  builtin:1000  shared:SSL:10m;
    ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;

    server {

        passenger_enabled on;


        listen 443 ssl;

        root /usr/share/nginx/html;
        index index.html index.htm;

        ssl_certificate /etc/nginx/ssl/1_beast.smartupweb.com_bundle.crt;
        ssl_certificate_key /etc/nginx/ssl/smartup1.key;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ALL:!DH:!EXPORT:!RC4:+HIGH:+MEDIUM:!LOW:!aNULL:!eNULL;

        #location / {
         #       try_files $uri $uri/ =404;
        #}
}
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}

任何帮助表示感谢。

1 个答案:

答案 0 :(得分:3)

错误消息说明:

  

“/ var / www / cava / public /”的目录索引被禁止

表示您的文件夹没有index文件,或者文件被视为索引。

我对Passenger不熟悉,但如果您尝试将index.html文件放入内容<h1>Hello World</h1>,则可能会显示该文件。

下面与此问题没有直接关系,但为了保持一致,我会把它留在这里。

解决方案1 ​​

首先,确定您的nginx运行的用户

ps ueax|grep 'nginx: worker'|grep -v grep|cut -f1 -d' '
#⇒ www-data

或者可能是nobody,但在您的情况下,根据您的www-data文件,它是conf

更改/var/www/cava/public的权限:

sudo chown -R www-data /var/www/cava/public

重试,现在应该可以了。

解决方案2

制作nginx be running as your user。在conf更改的最顶端:

- user www-data:
+ user tasos;

后者可能更适合发展。