У меня один домен: example.com и несколько проектов: proj1, proj2, proj3 . У каждого проекта есть свой API и ВНУТРЕННЯЯ панель. Не могли бы вы предложить мне правильную конфигурацию DNS / Nginx для этой ситуации?
ВАРИАНТ 1
server_name api.example.com
location /proj1/v1.0 {
root /proj1/api/v1.0
}
location /proj2/v1.0 {
root /proj2/api/v1.0
}
location /proj3/v1.0 {
root /proj3/api/v1.0
}
----------------------------------
server_name internal.example.com
location /proj1 {
root /proj1/internal
}
location /proj2 {
root /proj2/internal
}
location /proj3 {
root /proj3/internal
}
ВАРИАНТ 2
server_name proj1.example.com
root /proj1
location /api/v1.0 {
}
location /internal {
}
----------------------------------
[...] the same for the proj2 and proj3
Должен ли я выбрать стратегию с несколькими местоположениями или несколькими субдоменами? Есть ли другое решение?
Вы можете использовать для этого регулярные выражения. Вот пример:
server_name api.example.com
location ~ ^/proj(\d+)/v1\.0 {
root /proj$1/api/v1.0
}
Регеxp в строке location
означает:
^/proj
запрос, начинающийся с "/proj"(\d+)
с одной или несколькими цифрами/v1\. 0
, за которым следует /v1.0
, тогда цифры будут сохранены в переменной $1
.
Эта переменная затем будет использована для определения каталога, в котором находятся файлы, как вы видите в строке, начинающейся с root
Таким образом, если вы обратитесь к /proj4711/v1. 0
, цифры 4711
будут использованы для определения того, что корневая директория должна быть /proj4711/api/v1.0