"http" directive is not allowed here in /etc/nginx/conf.d/nginx-basic.conf:1

11/21/2018

I'm seeing the "http" directive not allowed error from the logs. I have mounted "nginx-basic.conf" file in "conf.d" folder as a config mount in Kubernetes.

nginx-basic.conf-

http {
  server {
    location / {
      proxy_pass 35.239.243.201:9200;
      proxy_redirect off;
    }
  }

}

I'm not sure what is wrong with this. Could someone help me with pointing it out?

-- Ben Abey
google-kubernetes-engine
kubernetes
nginx

1 Answer

11/21/2018

You probably have another http directive in a base nginx.conf that includes everything under /etc/nginx/conf.d

For example (nginx.conf):

user www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
        worker_connections 768;
        # multi_accept on;
}

http {

        ##
        # Basic Settings
        ##

        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;
        ...
        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
}

You can try removing the http directive:

server {
  location / {
    proxy_pass 35.239.243.201:9200;
    proxy_redirect off;
  }
}
-- Rico
Source: StackOverflow