簡體   English   中英

Nginx-禁止目錄索引為“ / var / fruby / current / public /”

[英]Nginx - directory index of “/var/fruby/current/public/” is forbidden

好的,所以這個問題一定已經問過幾十遍了,但是老實說,我經歷了所有類似的問題,這些問題都與我的問題無關。

因此,有一些歷史和配置Rails 3應用程序,Passenger + Nginx 3作為生產服務器

我目前正在通過bash腳本部署我的生產Rails 3應用程序,該應用程序基本上每次都會克隆git repo並進行一些魔術處理,由於存在問題,因此我們決定遷移到Capistrano。

編寫deploy.rb腳本,指定共享文件夾,首先在測試服務器上將其全部啟動,然后設法使其全部正常運行。

現在,我對生產服務器進行同樣的操作,通過Capistrano進行部署,使其與我的手動bash腳本文件夾分開,這樣它們就不會發生任何沖突,將nginx根目錄從

root /var/www/public;

root /var/fruby/current/public;

重新啟動nginx時,出現403錯誤和日志中的以下記錄。

2014/06/08 18:28:32 [error] 5239#0: *1 directory index of "/var/fruby/current/public/" is forbidden, client: 109.187.177.116, server: example.com, request: "GET / HTTP/1.1", host: "example.com", referrer: ""

由於乘客配置沒有更改,因此可以安全地假設問題出在文件夾權限中,但老實說我似乎無法確定問題所在。權限對我來說所有者確實如此,也許您可​​以指出我朝着正確的方向?

這必須與乘客有關,因為如果我手動使用rails啟動應用程序,則啟動效果會很好。

/opt/nginx/conf/nginx.conf

里面的http塊:

passenger_root /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.18;
passenger_ruby /usr/local/bin/ruby;
proxy_read_timeout 640;

服務器塊:

server {
    listen   443;
    server_name  example.com;

    ssl on;
    ssl_certificate /opt/nginx/conf/certs/example.com.crt;
    ssl_certificate_key /opt/nginx/conf/certs/example.com.key.nopass;

    charset utf-8;
    #root /var/www/public; # Old directory my bash script deployed to
    root /var/fruby/current/public; # New directory, capistrano deploys to
    passenger_enabled on;
    rails_env production;

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

現在,fruby文件夾具有以下權限:

drwxr-xr-x  5 root root   4096 Jun  8 18:56 fruby/

里面的ruby文件夾

drwxr-xr-x  5 root root 4096 Jun  8 18:56 ./
drwxr-xr-x 17 root root 4096 Jun  8 17:31 ../
lrwxrwxrwx  1 root root   34 Jun  8 18:56 current -> /var/fruby/releases/20140608145412/
drwxr-xr-x  4 root root 4096 Jun  8 18:54 releases/
drwxr-xr-x  7 root root 4096 Jun  8 17:46 repo/
-rw-r--r--  1 root root  170 Jun  8 18:56 revisions.log
drwxr-xr-x  7 root root 4096 Jun  8 17:47 shared/

內部共享文件夾

drwxr-xr-x  7 root   root    4096 Jun  8 17:47 ./
drwxr-xr-x  5 root   root    4096 Jun  8 18:56 ../
drwxr-xr-x  2 root   root    4096 Jun  8 17:49 bin/
drwxr-xr-x  3 root   root    4096 Jun  8 17:47 bundle/
drwxr-xr-x  2 root   root    4096 Jun  8 17:51 log/
drwxr-xr-x 10 root   root    4096 Jun  8 17:24 public/
drwxr-xr-x  6 nobody nogroup 4096 Jun  8 18:56 tmp/

生產服務器上的一切似乎都很好,並且權限幾乎相同。

讓我知道是否需要更多輸出。

很感謝任何形式的幫助!

通過將Passenger更新為4.0.44並重新編譯nginx(再次運行passenger-install-nginx-module )來設法解決了這個問題,顯然這是與我最初使用的測試服務器的唯一區別。

我運行以解決此問題的命令:

user@host-$: chmod 777 -R /tmp
user@host-$: chmod o+t -R /tmp
user@host-$: gem install passenger
user@host-$: passenger-install-nginx-module

前2個命令是此答案的補充( 使用ruby應用程序時出現remove_entry_secure錯誤

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM