Saya berjuang dengan beberapa perilaku terkait izin aneh: ketika saya mengkonfigurasi nginx untuk mendengarkan port 8080 semuanya berfungsi seperti yang diharapkan, tetapi ketika saya menggunakan port lain saya mendapatkan sesuatu seperti
2014/01/10 09:20:02 [emerg] 30181#0: bind() to 0.0.0.0:8090 failed (13: Permission denied)
di /var/log/nginx/error.log
Saya tidak tahu ke mana harus mencari jadi saya tidak benar-benar tahu bagian mana dari konfigurasi yang mungkin menarik.
di nginx.conf nginx dikonfigurasi untuk dijalankan sebagai nginx:
user nginx;
Juga pengguna nginx ada di grup lain 'git'
di situs-config saya mencoba mendengarkan seperti ini:
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>;
...
}
Saya hanya memiliki satu pendengar lagi yang melayani port 443.
Ketika saya memulai beberapa layanan lain misalnya SimpleHTTPServer
pada port 8090 dll sebagai non-root semuanya berfungsi dengan baik:
$ 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 -
Apa alasannya untuk izin yang ditolak secara umum?
Sistem adalah Fedora 18 ngnix adalah stock fedora 1.2.9
sumber
/var/log/audit/audit.log
.Jawaban:
Ini kemungkinan besar akan terkait dengan SELinux
Seperti yang Anda lihat dari output di atas dengan SELinux dalam mode penguatan http hanya diperbolehkan untuk mengikat ke port yang terdaftar. Solusinya adalah dengan menambahkan port yang ingin Anda ikat ke daftar
akan menambahkan port 8090 ke daftar.
sumber
semanage: command not found
, Anda dapat menginstalnya denganyum install policycoreutils-python
.