Apache2: sites-enabled vs conf-enabled?

Solution 1:

conf-enabled is for global configuration excerpts that affect all vhosts. sites-enabled should only contain complete vhost definitions.

Of course, you can also include conf-enabled/* in your vhost definition if that makes sense in your setup.

Solution 2:

This entire concept does not exist if you install Apache from sources. It has been introduced by Debian/Ubuntu/... as a more structured way of organizing your files. The idea is that each virtual host stanza is put in a separate file and save in the folder sites_available. Next for the sites you actually want to enable a symbolic is created in the sites_enabled folder.

The same structure exists with conf_* directories in which you can put other configurations that you may want to enabled or disable, e.g. modules. I've never really used that part.

In the end you can do it however you want as long as you know what, where, and why. All files in the *_enabled directories are included in the apache configuration.

Edit: It's also explained in the documentation (though briefly): https://ubuntu.com/server/docs/web-servers-apache