nginx: [emerg] директива «сервер» не разрешена здесь в /etc/nginx/conf.d, даже если тег сервера находится внутри http

#docker #nginx

Вопрос:

Я пытаюсь добавить заголовок CORS в свое приложение при развертывании его в облаке через docker, я получаю ошибку: nginx: [emerg] директива «сервер» запрещена здесь в /etc/nginx/conf.d/default.conf:1

Мой файл nginx

 http {
 include       /etc/nginx/mime.types;
 default_type  application/octet-stream;
 server {
      root https://srm-master.nonprod.com;
      index index.html index.htm;
    set $cors "";
    if ($http_origin ~* (.*.ini.com)) {
      set $cors "true";
    }
    server_name .ini.com;
   location / {
   if ($cors = "true") {
        add_header 'Access-Control-Allow-Origin' "$http_origin";
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, 
        DELETE, PUT';
        add_header 'Access-Control-Allow-Credentials' 'true';
        add_header 'Access-Control-Allow-Headers' 'User-Agent,Keep- 
        Alive,Content-Type';
    }
   }
    }

   #gzip  on;

    include /etc/nginx/conf.d/*.conf;
   }
 

Ответ №1:

На самом деле проблема не имеет никакого отношения к Docker , причиной ошибки является конфигурация nginx. Потому nginx что разрешите только один http раздел, и он был определен по адресу /etc/nginx/nginx.conf . Удалите http раздел в своей конфигурации, и он должен быть обработан

 server {
      root https://srm-master.nonprod.com;
      index index.html index.htm;
    set $cors "";
    if ($http_origin ~* (.*.ini.com)) {
      set $cors "true";
    }
    server_name .ini.com;
   location / {
   if ($cors = "true") {
        add_header 'Access-Control-Allow-Origin' "$http_origin";
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, 
        DELETE, PUT';
        add_header 'Access-Control-Allow-Credentials' 'true';
        add_header 'Access-Control-Allow-Headers' 'User-Agent,Keep- 
        Alive,Content-Type';
    }
   }
 }