nginx missing sites-available directory
If you'd prefer a more direct approach, one that does NOT mess with symlinking between /etc/nginx/sites-available
and /etc/nginx/sites-enabled
, do the following:
- Locate your nginx.conf file. Likely at
/etc/nginx/nginx.conf
- Find the http block.
- Somewhere in the http block, write
include /etc/nginx/conf.d/*.conf;
This tells nginx to pull in any files in theconf.d
directory that end in.conf
. (I know: it's weird that a directory can have a.
in it.) - Create the
conf.d
directory if it doesn't already exist (per the path in step 3). Be sure to give it the right permissions/ownership. Likely root or www-data. - Move or copy your separate config files (just like you have in
/etc/nginx/sites-available
) into the directoryconf.d
. - Reload or restart nginx.
- Eat an ice cream cone.
Any .conf
files that you put into the conf.d
directory from here on out will become active as long as you reload/restart nginx after.
Note: You can use the conf.d
and sites-enabled
+ sites-available
method concurrently if you wish. I like to test on my dev box using conf.d
. Feels faster than symlinking and unsymlinking.
Well, I think nginx by itself doesn't have that in its setup, because the Ubuntu-maintained package does it as a convention to imitate Debian's apache setup. You could create it yourself if you wanted to emulate the same setup.
Create /etc/nginx/sites-available
and /etc/nginx/sites-enabled
and then edit the http
block inside /etc/nginx/nginx.conf
and add this line
include /etc/nginx/sites-enabled/*;
Of course, all the files will be inside sites-available
, and you'd create a symlink for them inside sites-enabled
for those you want enabled.