在Nginx中使用变量

时间:2013-11-19 15:59:26

标签: nginx

我的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
)

1 个答案:

答案 0 :(得分:0)

尝试这样的事情

server {
    server_name ~^(www\.)?(?<domain>.+)$;
    # ....
}

然后强制域为SERVER_NAME

fastcgi_param SERVER_NAME $domain;

请注意,如果您想将其包含在域名中,则不会包含www部分

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