unknown directive "server" in /etc/nginx/nginx.conf:4
The server
directive must be contained in the context of http
module. Additionally you are missing top-level events module, which has one obligatory setting, and a bunch of stanzas which are to be in the http module of your config. While nginx documentation is not particularly helpful on creating config from scratch, there are working examples there.
Source: nginx documentation on server directive
Adding a top level entry got around the problem:
events { }
Try to adjust line endings and the encoding of your configuration file. In my case ANSI encoding and possibly "Linux style" line endings (only LF
symbols, not both CR
and LF
symbols) were required.
I know it is a rather old question. However the recommendation of the accepted answer (that the server
directive must be contained in the context of http
module) might confuse because there are a lot of examples (on the Nginx website also and in this Microsoft guide) where the server
directive is not contained in the context of http
module.
Possibly the answer of sd z ("I rewrote the *.conf file and it worked") comes from the same reason: there was a .config file with incorrect encoding or line endings which was corrected after the file has been rewrited.