nginx: [emerg] директива "server" здесь запрещена

Я переконфигурировал nginx, но я не могу его перезапустить, используя следующую конфигурацию:

конф:

server {
listen 80;
server_name www.example.com;
return 301 $scheme://example.com$request_uri;
}


server {
listen 80;
server_name example.com;

access_log /var/log/nginx/access.log;
error_log  /var/log/nginx/error.log;

location /robots.txt {
    alias /path/to/robots.txt;
    access_log off;
    log_not_found off;
}

location = /favicon.ico { access_log off; log_not_found off; }

location / {
    proxy_pass_header Server;
    proxy_set_header Host $http_host;
    proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Scheme $scheme;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_connect_timeout 30;
    proxy_read_timeout 30;
    proxy_pass http://127.0.0.1:8000;
}

location /static {
    expires 1M;
    alias  /path/to/staticfiles;
}
}

после запуска sudo nginx -c conf -t чтобы проверить конфигурацию, возвращается следующая ошибка, я не могу понять, в чем действительно проблема

nginx: [emerg] "server" directive is not allowed here in    /etc/nginx/sites-available/config:1
nginx: configuration file /etc/nginx/sites-available/config test failed

Ответы

Ответ 1

Это не файл конфигурации nginx. Он является частью файла конфигурации nginx.

Файл конфигурации nginx (обычно называемый nginx.conf) будет выглядеть так:

events {
    ...
}
http {
    ...
    server {
        ...
    }
}

server блок заключен в блок http.

Часто конфигурация распределяется между несколькими файлами, используя директивы include чтобы извлекать дополнительные фрагменты (например, из каталога с sites-enabled).

Используйте sudo nginx -t чтобы проверить полный файл конфигурации, который начинается с nginx.conf и извлекает дополнительные фрагменты с помощью директивы include. См. Этот документ для получения дополнительной информации.

Ответ 2

Пример действительного nginx.conf для обратного прокси; В случае, если кто-то застрянет как я

events {
  worker_connections  4096;  ## Default: 1024
}
http {
 server {
   listen 80;
   listen [::]:80;

   server_name 10.x.x.x;

   location / {
       proxy_pass http://10.y.y.y:80/;
       proxy_set_header Host $host;
   }
 }
}

и ты тоже можешь подавать его в докер

 docker run --name nginx-container --rm --net=host   -v /home/core/nginx/nginx.conf:/etc/nginx/nginx.conf nginx

Ответ 3

Путь к файлу nginx.conf, который является основным файлом конфигурации для Nginx, который также должен включать Путь для других файлов конфигурации Nginx, как и когда требуется, /etc/nginx/nginx.conf.

Вы можете открыть и отредактировать этот файл, набрав его в терминале

cd /etc/nginx

/etc/nginx$ sudo nano nginx.conf

Далее в этот файл вы можете включить другие файлы - которые могут иметь директиву SERVER в качестве независимого блока SERVER - которые не обязательно должны находиться в блоках HTTP или HTTPS, как поясняется в принятом ответе выше.

Я повторяю - если вам нужно, чтобы БЛОК СЕРВЕРА определялся в самом файле PRIMARY Config, то этот БЛОК СЕРВЕРА должен быть определен во включающем блоке HTTP или HTTPS в файле /etc/nginx/nginx.conf, который является основным файлом конфигурации для Nginx.

Также обратите внимание на -its OK, если вы определите, БЛОК СЕРВЕРА, непосредственно не заключающий его в блок HTTP или HTTPS, в файл, расположенный по пути /etc/nginx/conf.d. Также, чтобы это работало, вам нужно будет включить путь к этому файлу в файл PRIMARY Config, как показано ниже: -

http{
    include /etc/nginx/conf.d/*.conf; #includes all files of file type.conf
}

В дополнение к этому вы можете закомментировать из файла PRIMARY Config строку

http{
    #include /etc/nginx/sites-available/some_file.conf; # Comment Out 
    include /etc/nginx/conf.d/*.conf; #includes all files of file type.conf
}

и не нужно хранить какие-либо файлы конфигурации в /etc/nginx/sites-available/, а также не нужно СИМВОЛИЧЕСКОЕ связывать их с /etc/nginx/sites-enabled/, учтите, что это работает для меня - на случай, если кто-то сочтет, что это не подходит для них, или этот тип конфигурации является незаконным и т.д. и т.д., пожалуйста, оставьте комментарий, чтобы я мог исправить себя - спасибо.