Linode 更新 - 403 禁止使用 Rails 和 Passenger Nginx
Linode Update - 403 Forbidden with Rails and Passenger Nginx
你好我的应用程序运行良好,直到 Linode 在服务器上进行了某种硬件更新。服务器上所有的文件都还在,一切都好像和以前一样。我联系了 Linode,他们提到这可能是某处的权限问题(我找不到),他们无法提供更多帮助。
Nginx 错误日志显示如下:
2015/06/21 18:07:23 [error] 2870#0: *19684 directory index of
"/home/aurelplouf/apps/myapp/current/public/" is forbidden,
client: XXX.XXX.XXX.XXX, server: XXX.XXX.XX.XX, request: "GET / HTTP/1.1",
host: "myapp.com"
我有点不知所措,因为我的部分没有任何变化。
我检查了passenger-config --root
/home/aurelplouf/.rvm/gems/ruby-2.1.2@rails3.2/gems/passenger-4.0.53
哪个ruby
/home/aurelplouf/.rvm/rubies/ruby-2.1.2/bin/ruby
和 nginx.conf 具有以下设置:
http {
passenger_root /home/aurelplouf/.rvm/gems/ruby-2.1.2@rails3.2/gems/passenger-5.0.11;
passenger_ruby /home/aurelplouf/.rvm/gems/ruby-2.1.2@rails3.2/wrappers/ruby;
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name xxx.xxx.xx.xx myapp.com www.myapp.com *.myapp.com
root /home/aurelplouf/apps/myapp/current/public;
passenger_enabled on;
location / {
#root html;
# root /home/aurelplouf/apps/myapp/current/public;
# index index.html index.htm;
passenger_enabled on;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
更新
最后我检查了public文件夹
中的文件权限
aurelplouf@ruby:~/apps/myapp/current$ ls -al public
total 32
drwxrwxr-x 2 aurelplouf aurelplouf 4096 Jun 21 17:15 .
drwxrwxr-x 15 aurelplouf aurelplouf 4096 Jun 21 17:15 ..
-rw-rw-r-- 1 aurelplouf aurelplouf 728 Feb 15 2014 404.html
-rw-rw-r-- 1 aurelplouf aurelplouf 711 Feb 15 2014 422.html
-rw-rw-r-- 1 aurelplouf aurelplouf 643 Feb 15 2014 500.html
lrwxrwxrwx 1 aurelplouf aurelplouf 51 Jun 21 17:13 assets -> /home/aurelplouf/apps/myapp/shared/assets
-rw-rw-r-- 1 aurelplouf aurelplouf 1150 Feb 15 2014 favicon.ico
-rw-rw-r-- 1 aurelplouf aurelplouf 431 Oct 21 2014 robots.txt
-rw-rw-r-- 1 aurelplouf aurelplouf 340 Oct 21 2014 sitemap.xml.gz
lrwxrwxrwx 1 aurelplouf aurelplouf 51 Jun 21 17:15 system -> /home/aurelplouf/apps/myapp/shared/system
lrwxrwxrwx 1 aurelplouf aurelplouf 52 Jun 21 17:15 uploads -> /home/aurelplouf/apps/myapp/shared/uploads
passenger_enabled
指令在您的配置文件中只能出现一次。将其保留在服务器级别并删除您 location /
块。
此外,您可能需要考虑在 server
部分添加一个资产块,以允许在浏览器中缓存静态资产(只要您使用 rails资产管道,你应该这样做):
http {
passenger_root /home/aurelplouf/.rvm/gems/ruby-2.1.2@rails3.2/gems/passenger-5.0.11;
passenger_ruby /home/aurelplouf/.rvm/gems/ruby-2.1.2@rails3.2/wrappers/ruby;
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name xxx.xxx.xx.xx myapp.com www.myapp.com *.myapp.com;
root /home/aurelplouf/apps/myapp/current/public;
passenger_enabled on;
location ~ ^/(assets)/ {
root /home/aurelplouf/apps/myapp/current/public;
gzip_static on;
expires max;
add_header Cache-Control public;
gzip_vary on;
etag off;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
你好我的应用程序运行良好,直到 Linode 在服务器上进行了某种硬件更新。服务器上所有的文件都还在,一切都好像和以前一样。我联系了 Linode,他们提到这可能是某处的权限问题(我找不到),他们无法提供更多帮助。
Nginx 错误日志显示如下:
2015/06/21 18:07:23 [error] 2870#0: *19684 directory index of
"/home/aurelplouf/apps/myapp/current/public/" is forbidden,
client: XXX.XXX.XXX.XXX, server: XXX.XXX.XX.XX, request: "GET / HTTP/1.1",
host: "myapp.com"
我有点不知所措,因为我的部分没有任何变化。
我检查了passenger-config --root
/home/aurelplouf/.rvm/gems/ruby-2.1.2@rails3.2/gems/passenger-4.0.53
哪个ruby
/home/aurelplouf/.rvm/rubies/ruby-2.1.2/bin/ruby
和 nginx.conf 具有以下设置:
http {
passenger_root /home/aurelplouf/.rvm/gems/ruby-2.1.2@rails3.2/gems/passenger-5.0.11;
passenger_ruby /home/aurelplouf/.rvm/gems/ruby-2.1.2@rails3.2/wrappers/ruby;
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name xxx.xxx.xx.xx myapp.com www.myapp.com *.myapp.com
root /home/aurelplouf/apps/myapp/current/public;
passenger_enabled on;
location / {
#root html;
# root /home/aurelplouf/apps/myapp/current/public;
# index index.html index.htm;
passenger_enabled on;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
更新 最后我检查了public文件夹
中的文件权限aurelplouf@ruby:~/apps/myapp/current$ ls -al public
total 32
drwxrwxr-x 2 aurelplouf aurelplouf 4096 Jun 21 17:15 .
drwxrwxr-x 15 aurelplouf aurelplouf 4096 Jun 21 17:15 ..
-rw-rw-r-- 1 aurelplouf aurelplouf 728 Feb 15 2014 404.html
-rw-rw-r-- 1 aurelplouf aurelplouf 711 Feb 15 2014 422.html
-rw-rw-r-- 1 aurelplouf aurelplouf 643 Feb 15 2014 500.html
lrwxrwxrwx 1 aurelplouf aurelplouf 51 Jun 21 17:13 assets -> /home/aurelplouf/apps/myapp/shared/assets
-rw-rw-r-- 1 aurelplouf aurelplouf 1150 Feb 15 2014 favicon.ico
-rw-rw-r-- 1 aurelplouf aurelplouf 431 Oct 21 2014 robots.txt
-rw-rw-r-- 1 aurelplouf aurelplouf 340 Oct 21 2014 sitemap.xml.gz
lrwxrwxrwx 1 aurelplouf aurelplouf 51 Jun 21 17:15 system -> /home/aurelplouf/apps/myapp/shared/system
lrwxrwxrwx 1 aurelplouf aurelplouf 52 Jun 21 17:15 uploads -> /home/aurelplouf/apps/myapp/shared/uploads
passenger_enabled
指令在您的配置文件中只能出现一次。将其保留在服务器级别并删除您 location /
块。
此外,您可能需要考虑在 server
部分添加一个资产块,以允许在浏览器中缓存静态资产(只要您使用 rails资产管道,你应该这样做):
http {
passenger_root /home/aurelplouf/.rvm/gems/ruby-2.1.2@rails3.2/gems/passenger-5.0.11;
passenger_ruby /home/aurelplouf/.rvm/gems/ruby-2.1.2@rails3.2/wrappers/ruby;
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name xxx.xxx.xx.xx myapp.com www.myapp.com *.myapp.com;
root /home/aurelplouf/apps/myapp/current/public;
passenger_enabled on;
location ~ ^/(assets)/ {
root /home/aurelplouf/apps/myapp/current/public;
gzip_static on;
expires max;
add_header Cache-Control public;
gzip_vary on;
etag off;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}