У меня на компьютере куча самых разных веб-проектов, и каждый из них требует свой собственный конфиг для веб-сервера. При создании нового проекта была стандартная последовательность:

  • создать nginx-конфиг
  • отправить симлинк в /etc/nginx/conf.d/ (ну или сам конфиг)

И это не очень удобно, так как для второй операции нужно вводить длинную команду с абсолютными путями, типа:

sudo ln -s /home/user/projects/my-super-project/nginx.conf /etc/nginx/conf.d/my-super-project.conf

И я нашел тривиальное решение (возможно вы тоже так делаете, для меня это было большим открытием, с мыслями - почему я раньше до этого не додумался).

В /etc/nginx/conf.d/ нужно создать конфиг, который будет подключать все конфиги уже из нашей папки. Я создал папку: /home/user/projects/nginx-configs/ и там расположил все свои nginx-конфиги. Далее:

sudo echo "include /home/cmx/projects/nginx-configs/*.conf;" > /etc/nginx/conf.d/my-configs.conf

И теперь можно просто создавать конфиги в nginx-configs/ и делать перезагружать nginx. Больше не нужно никаких sudo ln -s или того хуже sudo mv или sudo cp.

Неочевидные нюансы:

  • возможно кто-то спросит, зачем мы создаем отдельный конфиг в conf.d/, ведь можно загрузку прописать в /etc/nginx/nginx.conf? Ответ: если изменить глобальный конфиг, то при обновлении операционной системой nginx-а могут возникнуть конфликты конфигов. Чтобы их избежать, мы не изменяем глобальный конфиг, а добавляем свой.