我有一个域名:示例.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