在Nginx中使用变量

在Nginx中使用变量,nginx,Nginx,我的vhost遵循一个通用逻辑,我正试图在nginx.conf中的“server”指令中尽可能多地定义它,而不是conf.d/目录中的单个domain.conf。 为了实现这一点,我使用了变量,但它们没有被求值。 下面是一个使用$host变量的服务器名称及其别名的示例。 但在我的php脚本中,变量是作为名称报告的,而不是作为值报告的: server { listen 80; server_name $host *.$host; cha

我的vhost遵循一个通用逻辑,我正试图在nginx.conf中的“server”指令中尽可能多地定义它,而不是conf.d/目录中的单个domain.conf。 为了实现这一点,我使用了变量,但它们没有被求值。 下面是一个使用$host变量的服务器名称及其别名的示例。 但在我的php脚本中,变量是作为名称报告的,而不是作为值报告的:

server {
        listen       80;
        server_name  $host *.$host;
        charset utf-8;

        access_log  /var/log/$host.access.log  main;

        location / {
            root   /var/www/$host;
            index  app.php index.php index.html home.php home.html;
        }

        location ~ \.php$ {
            fastcgi_pass   127.0.0.1:9000;
            root           /var/www/$host;
            fastcgi_index  app.php;
            include        /etc/nginx/fastcgi.conf;
        }

        location ~ /\. {
            deny  all;
        }
    }
输出:

Array
(    
    [SERVER_NAME] => $host
)

试试这样的

server {
    server_name ~^(www\.)?(?<domain>.+)$;
    # ....
}
请记住,如果您想将
www
部分包含在域名中,则该部分不包括在内

server_name ~^(?<domain>.+)$;
server_name~ ^(?.+)$;

然后再次使用相同的regexp来定义根?:(不,变成了[SERVER\u NAME]=>~^(www\)(?。+)$有点奇怪,你的nginx版本是什么
server_name ~^(?<domain>.+)$;