Я борюсь с некоторым странным поведением, связанным с разрешениями: когда я настраиваю nginx для прослушивания порта 8080, все работает как положено, но когда я использую любой другой порт, я получаю что-то вроде
2014/01/10 09:20:02 [emerg] 30181#0: bind() to 0.0.0.0:8090 failed (13: Permission denied)
в /var/log/nginx/error.log
Я понятия не имею, где искать, поэтому я не знаю, какие части конфигурации могут быть интересны.
в nginx.conf nginx настроен для запуска от имени nginx:
user nginx;
Также пользователь nginx находится в другой группе 'git'
в конфигурации сайта я пытался слушать так:
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>;
...
}
У меня есть только один слушатель, который обслуживает порт 443.
Когда я запускаю какой-либо другой сервис, например, SimpleHTTPServer
порт 8090 и т. Д., Не являясь пользователем root, все работает нормально:
$ 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 -
Какие могут быть причины для отказа в разрешениях в целом?
Система Fedora 18 ngnix является стоковой Fedora 1.2.9
источник
/var/log/audit/audit.log
.Ответы:
Скорее всего, это будет связано с SELinux
Как видно из вышеприведенного вывода, с SELinux в принудительном режиме http разрешено связываться только с указанными портами. Решение состоит в том, чтобы добавить порты, которые вы хотите привязать к списку
добавит порт 8090 в список.
источник
semanage: command not found
, вы можете установить его сyum install policycoreutils-python
.