403 Interdit sur l'application Rails w / Nginx, passager
Tout d'abord, toutes mes excuses: je sais 403 Forbidden question est une commune de Rails/Nginx installe, mais aucune des réponses que j'ai lu jusqu'à présent ont résolu pour moi.
Avertissement: Ceci est ma première fois de déployer une application Rails, quelque part qui n'est pas Heroku. Soyez doux. 😉
Situation: j'ai une application Rails en cours d'exécution sur une Ubuntu 12.04 server, l'exécution de Nginx (installé avec le Passager).
J'ai déployé mon application sur mon serveur correctement, mais lorsque je tente d'accéder au site, je reçois une erreur 403 Forbidden.
La vérification de mes journaux d'erreur, je vois:
2013/10/23 22:47:01 [error] 27954#0: *105 directory index of "/var/www/colepeters.com/current/public/" is forbidden, client: 50.3…server: colepeters.com, request: "GET /HTTP/1.1", host: "colepeters.com"
2013/10/23 22:47:10 [error] 27954#0: *106 directory index of "/var/www/colepeters.com/current/public/" is forbidden, client: 184…server: colepeters.com, request: "GET /HTTP/1.1", host: "colepeters.com"
2013/10/23 22:47:12 [error] 27954#0: *107 directory index of "/var/www/colepeters.com/current/public/" is forbidden, client: 151…server: colepeters.com, request: "GET /HTTP/1.1", host: "colepeters.com"
Cependant, lors de la vérification des autorisations sur ce dossier, je vois que l'utilisateur j'ai utiliser l'installation de Nginx avait à la fois de lire et d'exécuter des autorisations.
Voici les informations pertinentes à partir de mon nginx.conf:
user XXXX;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
passenger_root /home/cole/.rvm/gems/ruby-2.0.0-p247/gems/passenger-4.0.21;
passenger_ruby /home/cole/.rvm/wrappers/ruby-2.0.0-p247/ruby;
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 80;
server_name colepeters.com www.colepeters.com;
passenger_enabled on;
root /var/www/colepeters.com/current/public/;
rails_env production;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root /var/www/colepeters.com/current/public;
index index.html index.htm;
# autoindex on;
}
J'apprécierais toute aide à la résolution de cette. Merci!
Mise à JOUR
Depuis, j'ai corrigé le erroneus passenger_ruby chemin, mais 403 Forbidden, c'est persister, même après le redémarrage de Nginx.
source d'informationauteur cole
Vous devez vous connecter pour publier un commentaire.
Vous pouvez vérifier le chemin d'accès à votre passager de l'installation avec
et le chemin de votre installation de ruby avec
puis de comparer avec le insérée dans nginx.conf.
J'ai eu le même message d'erreur. Dans mon cas, je l'ai fixée par la suppression de l'emplacement /{} d'entrée.
- ou assurez-vous que votre utilisateur a la permission de vos rails de projet
Ajoutant
passenger_enabled on;
à la directive serveur a fonctionné pour moi.J'ai été l'exécution d'une configuration similaire à la vôtre et à avoir le même problème avec mon nginx.fichier conf. De trébucher à travers le Nginx pièges de la page m'a aidé à le résoudre.
Votre fichier ressemble à la mienne, donc je vais partager deux choses que vous pouvez essayer qui a fonctionné pour moi:
tout d'abord, vous avez le
root
chemin dans les deuxserver {}
bloc ET lelocation {}
bloc. Tout n'est pas nécessairement un problème, selon les docs lien ci-dessus "Si vous ajoutez une racine à chaque emplacement bloquer ensuite l'emplacement du bloc qui n'est pas appariés aura pas de racine." Je me suis débarrassé des racines dans l'emplacement des blocs, mais l'a gardé dans le bloc de serveur.déplacer l'index des directives (
index index.html index.htm;
) de l'emplacement de bloquer jusqu'à l'intérieur de lahttp {}
bloc. L'emplacement des blocs va hériter de cette.de faire ces deux choses et de redémarrer le serveur a fonctionné pour moi.
Le problème réside dans le
location /{...}
section: lapassenger_enabled on
ne pas propager à partir de l'server {...}
dans lelocation /{...}
.Si vous supprimez
location /{...}
ou ajouterpassenger_enabled on
il devrait travailler.Les éléments clés sont les suivants:
Suppression de l'emplacement du bloc pour le /la section, en supposant que les Rails de l'application est accessible à l' /
Assurer la passenger_ruby vers le rvm script pour la version de ruby
Ajouter des autorisations d'exécution pour l'utilisateur, le groupe et à tous les autres, les répertoires d'atteindre à
De déclarer la racine à deux reprises à l'intérieur du bloc de serveur et à l'intérieur de l' /emplacement du bloc ainsi que l'orientation des nginx utiliser l'index de la directive. Aussi enlever le "/" après le dossier public
essayer de faire ce