J'ai un problème avec un comportement étrange lié aux autorisations: lorsque je configure nginx pour écouter le port 8080, tout fonctionne comme prévu, mais lorsque j'utilise un autre port, je reçois quelque chose comme:
2014/01/10 09:20:02 [emerg] 30181#0: bind() to 0.0.0.0:8090 failed (13: Permission denied)
dans /var/log/nginx/error.log
Je ne sais pas où regarder, donc je ne sais pas vraiment quelles parties de la configuration pourraient être intéressantes.
dans nginx.conf nginx est configuré pour s'exécuter en tant que nginx:
user nginx;
De plus, l'utilisateur nginx est dans un autre groupe 'git'
dans le site-config j'ai essayé d'écouter comme ceci:
server {
listen 8090; #does not work
#listen 8080; #works
#listen 9090; #does not work
#listen 9090 default; #does not work neighter
#listen 80; #works!
server_name <some IP>;
...
}
J'ai un seul auditeur supplémentaire qui sert le port 443.
Lorsque je lance un autre service, par exemple un SimpleHTTPServer
port sur le port 8090, etc. en tant que service non root, tout fonctionne correctement:
$ python -m SimpleHTTPServer 8090
Serving HTTP on 0.0.0.0 port 8090 ...
localhost.localdomain - - [10/Jan/2014 09:34:19] "GET / HTTP/1.1" 200 -
Quelles peuvent être les raisons des autorisations refusées en général?
Le système est Fedora 18 ngnix est stock fedora 1.2.9
la source
/var/log/audit/audit.log
.Réponses:
Cela sera probablement lié à SELinux
Comme vous pouvez le voir dans la sortie ci-dessus avec SELinux en mode d'application forcé, http est uniquement autorisé à se lier aux ports répertoriés. La solution consiste à ajouter à la liste les ports que vous souhaitez lier.
ajoutera le port 8090 à la liste.
la source
semanage: command not found
, vous pouvez l'installer avecyum install policycoreutils-python
.