Показаны сообщения с ярлыком nginx. Показать все сообщения
Показаны сообщения с ярлыком nginx. Показать все сообщения

среда, 22 августа 2012 г.

Cpanel wildcard domains and nginx

На днях появилась такая проблемка:
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' '`

понедельник, 6 февраля 2012 г.

Харденинг

Надо пробовать чуток укрепить хостинги...

1. Сетевой стек. Посмотрим, что будет, если сделать:
net.ipv4.tcp_max_syn_backlog=2048
net.ipv4.tcp_synack_retries=3
net.ipv4.tcp_fin_timeout=20
По идее, сможем больше синов держать, быстрее закрывать те, что так и не открыты до конца и быстрее прибивать закрываемые.

2. limit_conn с $binary_remote_addr для всех виртуал хостов. Штучек 16 должно хватить.
Так же можно попробовать ставить rate с айпишника, но может вызвать эээ.. огорчение у некот. клиентов. Ещё наверно имеет смысл разграничить по числу коннектов на один виртуал хост вообще, но тоже может вызвать неадекватную реакцию.

Что бы ещё сделать?

понедельник, 17 января 2011 г.

nginx vs squid

vs в картинках.
Пояснение:
Первая половинка - сквид, вторая - nginx. На первой картинке на жёлтый можно не смотреть, это просто MaxClients. Также из 4 гигов рамы 2 было у сквида в рамдиске, этим обусловлен вид соотв. картинки.
Разумеется, было бы интереснее иметь ещё картинку с сквидом без рамдиска и честными 4 гигами рамы, но возможности получить не было.







четверг, 26 августа 2010 г.

nginx htpasswd

В нужный локейшн добавляем:
        auth_basic            "auth required";
        auth_basic_user_file  /etc/nginx/htpasswd;
В  /etc/nginx/htpasswd вставляем:
login:hash

Генерим: htpasswd -n login