Walczę z jakimś dziwnym zachowaniem związanym z uprawnieniami: kiedy konfiguruję nginx, aby nasłuchiwał portu 8080, wszystko działa zgodnie z oczekiwaniami, ale kiedy używam innego portu, dostaję coś takiego
2014/01/10 09:20:02 [emerg] 30181#0: bind() to 0.0.0.0:8090 failed (13: Permission denied)
w /var/log/nginx/error.log
Nie mam pojęcia, na co patrzeć, więc tak naprawdę nie wiem, które części konfiguracji mogą być interesujące.
w nginx.conf nginx jest skonfigurowany do działania jako nginx:
user nginx;
Również użytkownik nginx należy do innej grupy „git”
w konfiguracji strony próbowałem słuchać w ten sposób:
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>;
...
}
Mam tylko jednego odbiornika, który obsługuje port 443.
Kiedy uruchamiam inną usługę, np. SimpleHTTPServer
Na porcie 8090 itp. Jako użytkownika innego niż root, wszystko działa dobrze:
$ 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 -
Jakie mogą być przyczyny odmowy uprawnień w ogóle?
System to Fedora 18 ngnix to magazyn fedora 1.2.9
źródło
/var/log/audit/audit.log
.Odpowiedzi:
Najprawdopodobniej będzie to związane z SELinux
Jak widać z powyższego wyniku z SELinuksem w trybie wymuszania, http może łączyć się tylko z wymienionymi portami. Rozwiązaniem jest dodanie do listy portów, które chcesz powiązać
doda port 8090 do listy.
źródło
semanage: command not found
, możesz go zainstalować za pomocąyum install policycoreutils-python
.