J'essaie de connecter Nginx à uWSGI pour pouvoir exécuter une application écrite en Ruby (où je ne peux pas utiliser passager). Voici la configuration de mon hôte virtuel:
server {
listen unix:/var/run/nginx/redmine.sock;
root /var/www/redmine/public;
location / {
try_files $uri @uwsgi;
}
location @uwsgi {
include uwsgi_params;
uwsgi_pass unix:/var/run/uwsgi/redmine.sock;
}
}
C'est facile, j'essaie de trouver un fichier statique, sinon je passe à uwsgi qui écoute sur le socket Unix. Cela me concerne une erreur 502 de "mauvaise passerelle". Je suis allé lire les journaux d'erreur et j'ai les informations suivantes:
2014/09/09 20:08:56 [crit] 20922#0: *29484 connect() to unix:/var/run/uwsgi/redmine.sock failed (13: Permission denied) while connecting to upstream, client: unix:, server: , request: "GET /redmine HTTP/1.0", upstream: "uwsgi://unix:/var/run/uwsgi/redmine.sock:", host: "localhost"
Mais j'étais à peu près sûr d'avoir configuré uWSGI pour utiliser le même utilisateur que Nginx:
user nginx;
et
[uwsgi]
socket = /var/run/uwsgi/redmine.sock
chdir = /var/www/redmine
rails = .
plugins = 0:rack_ruby20
rack = config.ru
idle = 3600
chmod-socket = 660
chown-socket = nginx:nginx
uid = nginx
gid = nginx
Et la prise est:
fenix ~ # ls -lh /var/run/uwsgi/redmine.sock
srw-rw---- 1 nginx nginx 0 Set 9 20:08 /var/run/uwsgi/redmine.sock
Donc, Nginx ne peut même pas lire et écrire sur un socket qu’il possède? Qu'est-ce que c'est censé vouloir dire? Je n'arrive pas à comprendre comment le faire.
J'ai également remarqué que Nginx ne fonctionnerait pas, même si les autorisations de socket sont 777.
listen 80;
Réponses:
J'ai eu un problème similaire avec les autorisations et c'était parce que SELinux n'avait pas la stratégie permettant à nginx d'écrire sur des sockets
Vous pouvez consulter les messages SELinux AVC via
audit2why -al
pour voir plus de détails sur l’erreur, quelque chose du genre:Pour ajouter la stratégie d’application pour nginx, commencez par confirmer la stratégie d’application en exécutant
Vous devriez voir une sortie similaire à
Enfin, vous chargez la politique personnalisée en exécutant
la source
sestatus
.yum install setroubleshoot