Nginx配置重定向到小写字符串而不是原始字符串

时间:2014-05-28 14:08:20

标签: redirect nginx

我正在尝试将我的nginx配置从SubDomain.domain.com重定向到domain.com/SubDomain。我面临的问题是,当我尝试SubDomain.domain.com时,nginx将其重定向到domain.com/subdomain并错过了大写字母。我怎样才能做到这一点?

这是我的nginx配置块:

if ($http_host ~* "^(.+)\.domain\.com$") {
   set $subdomain $1;
   rewrite  (.*)  http://domain.com/$subdomain$1;
}

1 个答案:

答案 0 :(得分:1)

变量总是小写的。

  

$宿主

     

如果Host标头不可用,则此变量等于请求标头中的行Host或处理请求的服务器的名称。

     

在这种情况下,此变量可能与$ http_host具有不同的值:1)当Host输入标头不存在或具有空值时,$ host等于server_name指令的值; 2)当Host的值包含端口号时,$ host不包含该端口号。自0.8.17起,$ host的值始终为小写。

     

$ HTTP_HEADER

     

转换为小写并使用'破折号时,HTTP请求标头HEADER的值转换为'下划线',例如$ http_user_agent,$ http_referer ...;

来源:http://wiki.nginx.org/HttpCoreModule#.24host