Nginx/DNS配置多个项目

Nginx/DNS配置多个项目

我有一个域名:示例.com以及多个项目:项目1、项目2、项目3。每个项目都有自己的 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

我应该选择多个位置或多个子域策略吗?还有其他解决方案吗?

答案1

您可以使用正则表达式来执行此操作。以下是示例:

server_name api.example.com
location ~ ^/proj(\d+)/v1\.0 {
  root /proj$1/api/v1.0
}

该行中的正则表达式location的意思是:

  • ^/proj以“/proj”开头的请求
  • (\d+)后面紧跟着一个或多个数字
  • /v1\.0紧接着/v1.0

那么数字将存储在变量中$1。然后该变量将用于确定文件存储的目录,如您在以开头的行中看到的那样root

因此,如果您访问/proj4711/v1.0,数字4711将用于确定根目录应该是/proj4711/api/v1.0

相关内容