"server" directive is not allowed here error

Peter Booth peter_booth at me.com
Sun Jun 4 12:58:15 UTC 2017


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



More information about the nginx mailing list