Ruby 403禁止在nginx+上使用;乘客+;西纳特拉

Ruby 403禁止在nginx+上使用;乘客+;西纳特拉,ruby,nginx,sinatra,passenger,Ruby,Nginx,Sinatra,Passenger,我已经浏览了很多帖子,但我就是不能通过403禁止的错误。我有: 已更新网站文件夹上的nginx用户权限 更新了passenger_ruby以使用RVM包装器目录 已确认乘客根路径,乘客配置为根 我仍然得到403分,似乎找不到我缺少的东西 下面是我的档案 文件夹结构(755 www数据): config.ru: require 'rubygems' require 'sinatra' set :environment, ENV['RACK_ENV'].to_sym disable :run, :

我已经浏览了很多帖子,但我就是不能通过403禁止的错误。我有:

  • 已更新网站文件夹上的nginx用户权限
  • 更新了passenger_ruby以使用RVM包装器目录
  • 已确认乘客根路径,乘客配置为根
  • 我仍然得到403分,似乎找不到我缺少的东西

    下面是我的档案

    文件夹结构(755 www数据):

    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
    
    server {
      listen 80;
      server_name website.com;
    
      root /www/website/public;   # <--- be sure to point to 'public'!
      passenger_enabled on;
    }
    
    passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
    passenger_ruby /usr/local/rvm/wrappers/ruby-2.2.1/ruby;
    
     Require 'slim'
     get "/"
         slim: index
     do
    
    Server.conf

    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
    
    server {
      listen 80;
      server_name website.com;
    
      root /www/website/public;   # <--- be sure to point to 'public'!
      passenger_enabled on;
    }
    
    passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
    passenger_ruby /usr/local/rvm/wrappers/ruby-2.2.1/ruby;
    
     Require 'slim'
     get "/"
         slim: index
     do
    
    示例main.rb

    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
    
    server {
      listen 80;
      server_name website.com;
    
      root /www/website/public;   # <--- be sure to point to 'public'!
      passenger_enabled on;
    }
    
    passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
    passenger_ruby /usr/local/rvm/wrappers/ruby-2.2.1/ruby;
    
     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"
    
    --sinatra_test
    ----public #added this blank dir
    ----tmp    #added this blank dir
    ----config.ru
    ----SinatraTest.rb
    
    require File.absolute_path("SinatraTest.rb")
    run SinatraTest
    
    require 'sinatra/base'
    
    class SinatraTest < Sinatra::Base
        get '/' do
          "Hello World"
        end
    end
    
    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;
            }
    }
    
    尝试以下操作:


    如果您已经配置了passenger,只需跳过它,继续使用nginx配置。

    我刚开始使用Ruby | Sinatra | passenger | nginx,我也遇到了同样的模糊问题

    经过多次黑客攻击后,以下配置对我有效。它可能并不完美,但我希望它能帮助其他人解决这个问题

    文件夹结构(755 www数据):

    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"
    
    --sinatra_test
    ----public #added this blank dir
    ----tmp    #added this blank dir
    ----config.ru
    ----SinatraTest.rb
    
    require File.absolute_path("SinatraTest.rb")
    run SinatraTest
    
    require 'sinatra/base'
    
    class SinatraTest < Sinatra::Base
        get '/' do
          "Hello World"
        end
    end
    
    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;
            }
    }
    
    config.ru:

    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"
    
    --sinatra_test
    ----public #added this blank dir
    ----tmp    #added this blank dir
    ----config.ru
    ----SinatraTest.rb
    
    require File.absolute_path("SinatraTest.rb")
    run SinatraTest
    
    require 'sinatra/base'
    
    class SinatraTest < Sinatra::Base
        get '/' do
          "Hello World"
        end
    end
    
    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;
            }
    }
    
    SinatraTest.rb:

    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"
    
    --sinatra_test
    ----public #added this blank dir
    ----tmp    #added this blank dir
    ----config.ru
    ----SinatraTest.rb
    
    require File.absolute_path("SinatraTest.rb")
    run SinatraTest
    
    require 'sinatra/base'
    
    class SinatraTest < Sinatra::Base
        get '/' do
          "Hello World"
        end
    end
    
    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;
            }
    }
    

    你能从Nginx错误日志文件中发布相关消息吗?我已经添加了错误日志信息。对于任何未来的观众,我最终在sinatra文档中使用了Nginx和unicorn,这在sinatra文档中是分片的。谢谢你的回复,但这本指南与我在乘客文档中使用的指南非常相似。我尝试了几个选择,但都没有成功,最后还是放弃了。接下来我将对Apache进行一次运行,看看它是否会运行得更顺利。