所以
我有一台服务器,其中包含大约30个虚拟主机配置,每个配置都在各自单独的文件中。我的主要目的是基于$host
变量命名访问日志。
此刻,我正在HTTP块中使用以下内容来应用于所有conf文件:
http {
access_log /var/log/nginx/$host.access.log
}
我希望能够重写上述$host
而无需 www。,而只保留域本身。我已经找到了以下解决方案:
if ($domain ~* www\.(.*)) {
set $domain $1;
rewrite ^(.*)$ http://$domain$1 permanent;
}
唯一的问题是..不允许在'http'块内使用'IF'指令。.我仍然可以在仍处于'http'块内的情况下实现这一目标吗?也许使用“地图”?
预先感谢
汤姆
答案 0 :(得分:1)
您应该使用地图
http {
map $host $hostw {
default $host;
~*^www\.(.*) $1;
}
access_log /var/log/nginx/$hostw.access.log
}