56 votes

nginx : pas de permission pour lier le port 8090 mais il se lie à 80 et 8080

Je suis confronté à un comportement étrange lié aux permissions : lorsque je configure nginx pour qu'il écoute le port 8080, tout fonctionne comme prévu, mais lorsque j'utilise un autre port, j'obtiens quelque chose du genre

2014/01/10 09:20:02 [emerg] 30181#0: bind() to 0.0.0.0:8090 failed (13: Permission denied)

en /var/log/nginx/error.log

Je n'ai aucune idée de l'endroit où regarder et je ne sais donc pas vraiment quelles parties de la configuration pourraient être intéressantes.

dans nginx.conf, nginx est configuré pour fonctionner en tant que nginx :

user  nginx;

L'utilisateur nginx fait également partie d'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>;
    ...
}

Je n'ai plus qu'un seul listener qui dessert le port 443.

Lorsque je démarre un autre service, par exemple un SimpleHTTPServer sur le port 8090, etc. en tant que non-root, tout fonctionne bien :

$ 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 d'un refus d'autorisation en général ?

Le système est Fedora 18 ngnix est fedora stock 1.2.9

90voto

user9517 Points 113163

Il s'agit très probablement d'un problème lié à SELinux.

semanage port -l | grep http_port_t
http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000

Comme vous pouvez le voir dans la sortie ci-dessus, avec SELinux en mode enforcing, http n'est autorisé à se lier qu'aux ports listés. La solution est d'ajouter les ports sur lesquels vous voulez vous lier à la liste

semanage port -a -t http_port_t  -p tcp 8090

ajoutera le port 8090 à la liste.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X