#python #nginx
#python #nginx
Вопрос:
У меня эта ошибка в nginx версии 1.0.0
nginx: [emerg] unknown directive "user" in /etc/nginx/sites-enabled/
tornado:1
если я удаляю пользовательские www-данные, рабочие процессы получают ошибку
nginx: [emerg] unknown directive "worker_processes" in /etc/nginx/
sites-enabled/tornado:1
Я провел поиск в Google, но по-прежнему ничего не получил
пожалуйста, помогите
это мой tornado на сайте-доступен
user www-data www-data;
worker_processes 1;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
use epoll;
}
http {
# Enumerate all the Tornado servers here
upstream frontends {
server 127.0.0.1:8081;
server 127.0.0.1:8082;
server 127.0.0.1:8083;
server 127.0.0.1:8084;
}
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
keepalive_timeout 65;
proxy_read_timeout 200;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
gzip on;
gzip_min_length 1000;
gzip_proxied any;
gzip_types text/plain text/html text/css text/xml
application/x-javascript application/xml
application/atom xml text/javascript;
# Only retry if there was a communication error, not a timeout
# on the Tornado server (to avoid propagating "queries of death"
# to all frontends)
proxy_next_upstream error;
server {
listen 8080;
# Allow file uploads
client_max_body_size 50M;
location ^~ /static/ {
root /var/www;
if ($query_string) {
expires max;
}
}
location = /favicon.ico {
rewrite (.*) /static/favicon.ico;
}
location = /robots.txt {
rewrite (.*) /static/robots.txt;
}
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect false;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_pass http://frontends;
}
}
}
Ответ №1:
Вероятно, немного запоздало, но если кто-нибудь наткнется на это, вот подсказка:
Возможно столкновение конфигурации, проверьте в /etc/nginx файл .conf с той же директивой.
Комментарии:
1. Я случайно включил /etc/nginx /*.conf внутри /etc/nginx /nginx.conf, что вызвало цикл включения. И после того, как я последовал вашему совету, я нашел рекурсию. Спасибо!
Ответ №2:
Также стоит проверить, есть ли в nginx.conf строка «включить». Это очень распространенное явление и является источником коллизий.
Например.
evan@host:~/$ cat /etc/nginx/nginx.conf | grep include
include /etc/nginx/mime.types;
include /etc/nginx/conf.d/.conf;
include /etc/nginx/sites-enabled/;
В этом случае директива в /etc/nginx/sites-enabled/ будет конфликтовать с содержимым nginx.conf. Убедитесь, что вы не удваиваете что-либо между включенными файлами.
Ответ №3:
Просто хочу подробнее остановиться на ответе Кьетила М., поскольку это сработало для меня, но я не сразу понял, что он имеет в виду. Я не был до тех пор, пока после множества попыток я не исправил проблему и не получил сообщение «о, это то, что он имел в виду».
Если ваш файл /etc/nginx / nginx.conf и один из других конфигурационных файлов / etc / nginx / с поддержкой сайтов / используют одну и ту же директиву, такую как «user», вы столкнетесь с этой ошибкой. Просто убедитесь, что активна только 1 версия, и закомментируйте остальные.
Ответ №4:
директивы worker_ * должны находиться в верхней части конфигурации, то есть в /etc/nginx /nginx.conf
Пример: Мои первые строки:
user www-data;
worker_processes 4;
worker_connections 1024;
если вы хотите знать, сколько рабочих лучше всего подходит для вашего сервера, вы можете запустить эту команду:
grep processor /proc/cpuinfo | wc -l
это говорит вам, сколько у вас ядер, не имеет смысла иметь больше рабочих, чем ядер для веб-сайтов.
если вы хотите знать, сколько подключений могут обработать ваши работники, вы можете использовать это:
ulimit -n
Надеюсь, это поможет.
Ответ №5:
Я получал ту же ошибку, но когда я запустил nginx с параметрами -c как
nginx -c conf.d/myapp.conf
все сработало нормально
Ответ №6:
Другое дело, если вы создали файл конфигурации в Windows и используете в Linux, убедитесь, что окончания строк правильные (» r n» против » r») и что файл не сохранен в формате unicode.
Ответ №7:
В моем случае появилось сообщение об ошибке с пробелом перед user
, хотя там не было пробела:
nginx: [emerg] unknown directive " user" in /etc/nginx/nginx.conf:1
Оказывается, что два моих файла .conf имели спецификацию в начале файла. Удаление спецификации устранило проблему.