"server" directive is not allowed here error

oscaretu . oscaretu at gmail.com
Sun Jun 4 13:09:56 UTC 2017

Hello, Peter.

In the company where I work the file nginx.conf is bigger than 1 MB. Por
each virtual server, there are lots of definitions that are almost equal.
If I where the one who had to decide the file structure, I problably choose
to use a different file for each virtual host, so when we have to create a
new one, I just use a perl script to create the new one using some
substitutions in one of the existing ones. So it is easy for my to watch
the differences using a program like *meld* (or *tkdiff*, *kompare *or

There is a diffent approach, that is the inverse process: i've created a
script that splits the whole nginx.conf file to create an individual file
for each virtual host, and then I can compare a virtual host with another
one using meld in a easy way. Then I delete all the individual temporal

I think than having small files is less error-prone...

Kind regards,

On Sun, Jun 4, 2017 at 2:58 PM, Peter Booth <peter_booth at me.com> wrote:

> FWIWI have never understood the desire to have nginx configuration spread
> across multiple files.
> It just seems to invite error and make it harder to see what is going on.
> Perhaps if I worked for a hosting company I’d feel differently but on the
> sites that I have worked on,
> even with quite complicated, subtle caching logic the entire nginx.conf
> has been under 600 lines - not
> that different from a default Apache httpd.conf but with all configuration
> not 90% comments
> > On 4 Jun 2017, at 7:41 AM, Reinis Rozitis <r at roze.lv> wrote:
> >
> >> That can't be right, because before I used the multiple location
> directives, I
> >> didn't have http and it worked fine. Regardless, I followed your advice
> and I got
> >> the following now:
> >
> > As people have already pointed you probably have something like main
> config nginx.conf  with:
> >
> > http {
> > ..
> > include sites-enabled/*;
> > ..
> > }
> >
> > where each separate config file indeed doesn't need an extra http {} but
> the different server{} blocks still end up being within a (single) http {}.
> >
> >
> >> nginx: [emerg] "http" directive is not allowed here in
> >> /usr/local/nginx/conf/sites-enabled/ server.domain.tld -ssl:1
> >
> > Nginx includes/parses the files in the order they appear in the
> directory (sites-enabled/) - as it was stated you might try to check if the
> server file before " server.domain.tld -ssl" has a correct configuration
> (all the braces {} are closed etc).
> >
> > rr
> >
> > _______________________________________________
> > nginx mailing list
> > nginx at nginx.org
> > http://mailman.nginx.org/mailman/listinfo/nginx
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> http://mailman.nginx.org/mailman/listinfo/nginx

Oscar Fernandez Sierra
oscaretu at gmail.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20170604/3701828c/attachment.html>

More information about the nginx mailing list