Nginx 设置环境变量

Nginx 设置环境变量

以前的服务器运行在 Apache 上,但现在我已切换到 Nginx。一切都运行良好,只是我不知道如何将这一行 Apache 转换为我的工作 nginx 配置

SetEnvIf Host "^([^\.]+)\.my-shop\.dev$" MY_ENV=$1

它需要做的是,它需要读取第一个“param/subdomain/something”并将其设置为环境变量

到目前为止,我正尝试通过做这样的事情来实现这一点,但没有成功

server {
        listen   80 ;

        server_name $\.my-shop\.dev;

        location ~* \.php$ {
                try_files $uri $uri/ /index.php?q=&$args;
                fastcgi_pass unix:/run/php/php7.0-fpm.sock;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
                fastcgi_param MY_ENV $1;
        }
}

如果您需要任何其他信息,请告诉我,我会提供。谢谢!

答案1

要捕获商店子域名的主要部分,您可以使用以下命令:

server {
        listen   80 ;

        # match and catch the subdomain part in $prefix for later usage:
        server_name   ~^(?<prefix>.+)\.my-shop\.dev$;

        location ~* \.php$ {

                [...] # removed for better readability

                # add MY_ENV env variable to the value of earlier captured $prefix:
                fastcgi_param MY_ENV $prefix;
        }
}

更详细的解释和其他用例见http://nginx.org/en/docs/http/server_names.html#regex_names

相关内容