0

我不想向 API 添加任何版本控制逻辑。如果我在 nginx.conf 中使用通配符子域和正则表达式来确定子域部分,我可以将请求路由到特定目录。这是配置:

server {

        listen 80;
        server_name .api.domain.com;

        set $version $host;

        if ($version ~ "^(.+).api.domain.com") {
                set $version $1;
        }

        access_log /var/log/nginx/$version-access.log;
        error_log /var/log/nginx/$version-error.log info;

        location / {
                root /opt/webapps/app_$version/www/;
                index index.php;
        }

}

问题:这种技术有什么缺点吗?

4

1 回答 1

0

我找到了更好的方法 - 在 server_name 中命名捕获:

server {

  server_name ~^(?<version>.+).test$;
  root /your-path/$version.test;

}

这种方法更好,因为:

  1. 如果是邪恶的
  2. 它更清洁
于 2012-11-27T10:11:38.737 回答