На днях появилась такая проблемка:
1. Клиент в сипанели цепляет вайдкардный домен вида *.domain.com.
2. Панель добавляет алиас www.*.domain.com.
3. При генерации конфига nginx в директиву server_name попадает значение "*.domain.com www.*.domain.com"/
4. Nginx проверяет новый конфиг и говорит, что он invalid, т.к. "*" допускается только в начале или конце сервернейма.
Сипанель нельзя заставить генерить имена с "*" в середине, поэтому пришлось выгребать такие имена из нагенерённого конфига.
Сделал такую штуку:
1. Клиент в сипанели цепляет вайдкардный домен вида *.domain.com.
2. Панель добавляет алиас www.*.domain.com.
3. При генерации конфига nginx в директиву server_name попадает значение "*.domain.com www.*.domain.com"/
4. Nginx проверяет новый конфиг и говорит, что он invalid, т.к. "*" допускается только в начале или конце сервернейма.
Сипанель нельзя заставить генерить имена с "*" в середине, поэтому пришлось выгребать такие имена из нагенерённого конфига.
Сделал такую штуку:
#!/usr/bin/perlДергаю её после генерации конфига, в патч для скрипта-генератора:
my $filename=$ARGV[0];
open(IN, "<", $filename) or die "open error\n";
while (<IN>) {
my($line) = $_;
chomp($line);
if (m/server_name/) {
$line =~ s/\S+\*\S+//g;
}
print "$line\n";
}
--- build-conf.sh 2010-03-04 14:26:39.000000000 +0300
+++ build-conf.sh_new 2012-08-22 11:58:27.000000000 +0400
@@ -16,13 +16,16 @@
cd $ROOT
-if [ ! -f $NGINX/vhosts.conf.new ]; then
- touch $NGINX/vhosts.conf.new
- chmod 600 $NGINX/vhosts.conf.new
+if [ ! -f $NGINX/vhosts.conf.raw ]; then
+ touch $NGINX/vhosts.conf.raw
+ chmod 600 $NGINX/vhosts.conf.raw
fi
# build nginx conf using default template in $TMPL
-$ROOT/ngx_conf_gen.pl -c /usr/local/apache/conf/httpd.conf > $NGINX/vhosts.conf.new || exit 4
+$ROOT/ngx_conf_gen.pl -c /usr/local/apache/conf/httpd.conf > $NGINX/vhosts.conf.raw || exit 4
+
+# remove invalid wildcarded server_name (example: www.*.server.com)
+$ROOT/rm_badwildcard.pl $NGINX/vhosts.conf.raw > $NGINX/vhosts.conf.new
new=`$MD5 $NGINX/vhosts.conf.new | cut -f1 -d' '`
cur=`$MD5 $NGINX/vhosts.conf | cut -f1 -d' '`
Комментариев нет:
Отправить комментарий