сбой настройки nginx для tornadoweb, неизвестная директива «user»

#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 имели спецификацию в начале файла. Удаление спецификации устранило проблему.