繁体   English   中英

403禁止Nginx +乘客+ sinatra

[英]403 Forbidden on nginx + passenger + sinatra

我已经浏览了很多帖子,但是我无法摆脱这个403 Forbidden错误。 我有:

  1. 更新了nginx网站文件夹上的用户权限
  2. 更新了passenger_ruby以使用RVM包装器目录
  3. 使用passenger-config --root确认的passenger_root路径

我仍然是403,似乎找不到我所缺少的东西。

这是我下面的文件。

文件夹结构 (755 www-data):

--website
----app
----public
----tmp
----views
----config.ru

config.ru

require 'rubygems'
require 'sinatra'

set :environment, ENV['RACK_ENV'].to_sym
disable :run, :reload

require File.expand_path '../app/main.rb', __FILE__

run Sinatra::Application

服务器.conf

server {
  listen 80;
  server_name website.com;

  root /www/website/public;   # <--- be sure to point to 'public'!
  passenger_enabled on;
}

Nginx .conf

passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
passenger_ruby /usr/local/rvm/wrappers/ruby-2.2.1/ruby;

示例main.rb

 Require 'slim'
 get "/"
     slim: index
 do

网站错误日志:

2015/07/28 19:09:45 [error] 34000#0: *2 directory index of "/www/website/public/" is forbidden, client: 0.0.0.0, server: website.com, request: "GET / HTTP/1.1", host: "website.com"

尝试遵循以下步骤: https : //www.digitalocean.com/community/tutorials/how-to-deploy-a-rails-app-with-passenger-and-nginx-on-ubuntu-14-04

如果您已经配置了passenger,请跳过该步骤并进行nginx配置。

我只是从Ruby | Sinatra | Passenger | Nginx开始,我遇到了同样晦涩的问题。

经过大量修改之后,以下配置对我有用。 它可能并不完美,但我希望它可以帮助其他人解决这个问题。

文件夹结构(755 www-data):

--sinatra_test
----public #added this blank dir
----tmp    #added this blank dir
----config.ru
----SinatraTest.rb

config.ru:

require File.absolute_path("SinatraTest.rb")
run SinatraTest

SinatraTest.rb:

require 'sinatra/base'

class SinatraTest < Sinatra::Base
    get '/' do
      "Hello World"
    end
end

Nginx .conf:

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

events {
        worker_connections 768;
        # multi_accept on;
}

http {

        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;
        # server_tokens off;

        # server_names_hash_bucket_size 64;
        # server_name_in_redirect off;

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

        ##
        # SSL Settings
        ##

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
        ssl_prefer_server_ciphers on;

        ##
        # Logging Settings
        ##

        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

        gzip on;
        gzip_disable "msie6";

        passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
        passenger_ruby /home/myusername/.rvm/gems/ruby-2.4.0/wrappers/ruby;

        server {
                listen 80;
                server_name myservername.com;

                # Tell Nginx and Passenger where your app's 'public' directory is
                root /home/myusername/sinatra_test/public;

                passenger_enabled on;
        }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM