Nginx 在 Php 内传播 server_name 正则表达式

Nginx propagate server_name regex inside Php

在我的 Nginx 配置中有

server_name ~^(?<domain>.*mygreatsite987778.com.invalid)$ ;

效果很好。但是当 Php 执行 echo $_SERVER['SERVER'] 时,它会看到:

~^(?.*mygreatsite987778.com.invalid)$

尽管看起来合乎逻辑,但有没有办法获取与正则表达式匹配的服务器名称?服务器变量 HTTP_HOST 包含有效值 (stuff.mygreatsite987778.com.invalid)。我想保留 SERVER 变量。

这些变量在您的 Nginx 配置文件中定义。您可以将它们设置为您需要的任何值。

您正在查看的变量(在我的系统中称为 SERVER_NAME)正在使用 $server_name 变量的值,但您更愿意使用 $host$http_host 值。

这些变量中的大部分都在名为 fastcgi_params 的文件中定义,但您可以通过在 include 语句之后放置语句来单独覆盖它们。

例如:

include       fastcgi_params;
fastcgi_param SERVER $http_host;